astype과 asarray
> type() : type 함수로 대상의 데이터타입을 확인 할 수 있다.
> dtype : numpy의 메서드로 배열에 저장된 자료형을 알 수 있다.
> asarray : asarray함수는 입력 데이터를 ndarray로 변환하지만,
입력 데이터가 이미 ndarray인 경우 shallow copy(얕은 복사)현상이 나타난다.
> astype : astype 메서드를 사용하여 데이터 타입을 다른 형으로 명시적 변경이 가능하다.
다양한 색인 방법
↑ 2차원 리스트에서 차원의 축소 없이 0,1,5,6을 출력하기 위한 여러가지 형식
단, 이렇게 정수 색인을 하게 되면 포인트 색인이 되어 인덱싱 값이 (0,0), (1,1)인 원소가 각각 출력된다.
ix_함수를 이용해서도 색인이 가능하다.
단, 색인 값을 리턴하는게 아닌 해당 형식으로 색인을 했을시의 출력 형식을 반환하는 것이기 때문에
출력을 위해서는 배열에 전달해야 한다.
불리언 색인
> 특정 조건의 만족 여부에 따라 논리값(True, False)을 출력하는 색인
> Row값을 활용한 조건만 선택 가능
> 배열에 불리언 색인을 이용해서 데이터를 선택하면 반환되는 배열은 깊은 복사가 이루어 짐
> True, False값으로 반환하기 때문에 한번 더 전달 해 줘야 원본값으로 출력
조건 앞에 '~'를 사용시 해당 값을 제외하고 출력한다.
조건 색인에 논리 연산자 사용 가능.
> & : and 연산자
> | : or 연산자
3차원에서의 색인
3차원에서의 색인은 층을 선택 후, 선택한 인자에 순차적으로 색인을 해 주어야 한다.
array[ 층 ] [: , [행의 정수]][: , : , [열의 정수]
배열 전치와 축 바꾸기
배열 전치
> 배열의 행과 열의 구조를 바꾸는 방법
> 색인 데이터를 복사하지 않고 데이터 모양이 바뀐 View(shallow copy가 수행된 객체)를 반환하는 특별한 기능
T 메서드를 사용한 간단한 배열의 전치
단, T메서드는 층 고정이 불가능하다.
* 참고
행렬의 inner product(스칼라 곱)은 dot 함수를 이용하여 간단히 계산이 가능하다.
차원의 숫자 표현
2차원 |
|
|||||
|
행 |
열 |
||||
Python |
0 |
1 |
||||
R |
1 |
2 |
3차원 |
|
|||
Python |
층 |
행 |
열 |
|
0 |
1 |
2 |
||
R |
행 |
열 |
층 |
|
1 |
2 |
3 |
swapaxes와 transpose
> swapaxes(axis1, axis2) : 두 개의 축 번호를 순차대로 받아와서 축을 바꾸는 함수로, shallow copy가 이루어짐
어떤 두 축을 바꿀 것인지에 대한 명시만 하면 되므로, 함수의 인수에 순서에는 의미가 없음
> 단, 두 개의 인자만 전달 가능.
> transpose(*axes) : 원하는 축 번호를 순차대로 받아와서 축을 바꾸는 함수로 shallow copy가 이루어짐
transpose는 층(0),행(1),열(2) 순으로 arr2.transpose는 층은 그대로 두고, 행과 열의 배치만 변경
유니버셜 함수(nfunc)
> ndarray안에 있는 데이터 원소 별로 연산을 수행하는 함수
> 하나 이상의 스칼라 값을 받아서 하나 이상의 스칼라 결과 값을 반환하는
간단한 함수를 고속으로 수행할 수 있는 벡터화된 래퍼 함수
단항 유니버셜 함수
> sqrt나 exp같은 간단한 변형을 전체에 빠르게 적용 가능(단항 유니버셜 함수)
이항 유니버셜 함수
> add나 maximum처럼 2개의 인자를 취해서 단일 배열을 반환(이항 유니버셜 함수)
이항 유니버셜 함수 적용 예시.
두 개의 인자를 취해 단일 배열을 반환한다.
배열 연산으로 조건절 표현 (리스트 내포 포현식, Where)
리스트 내포 표현식
[ 전달할부분 / for / if ]
> 큰 배열을 처리할 경우 느린 속도
> 다차원 배열 사용 불가
> 위의 단점을 where함수를 이용해 보완
=> cond의 값이 참일 때 xarr의 값을, 거짓일 때 yarr의 값을 retrun 함.
where
where(조건 혹은 불리언 배열, 참일때의 return 값, 거짓일때의 return 값)
> x if 조건 else y같은 삼항식의 벡터화 버전
> where함수의 결과는 원본의 배열과 별개(계산된 값만 출력)
=> cond의 값이 참일 때 xarr의 값을, 거짓일 때 yarr의 값을 retrun 함.
성적에 따라 A,B,C를 출력(<= 1000'C',<= 2000'B',>2000'A') 하는 where 사용 예제.
배열 통계 메서드
sum이나 mean같은 함수는 선택적으로 axis인자를 받아 해당 axis에 대한 통계를 계산하고 한 차수 낮은 배열을 반환
R과 파이썬의 행별 열별 연산
파이썬 행 별 연산: 서로 다른 행 끼리
R의 행 별 연산: 같은 행 끼리
sum이나 mean같은 함수는 한 차수 낮은 배열을 반환하기 때문에,
keepdims=True를 사용해 차원을 유지시킬 수 있다.
> cumsum : 각 원소의 누적 합
> cumprod : 각 원소의 누적 곱
- axis=로 방향 설정 가능.
> max : 최대값
> min : 최소값
> argmax : 최대원소의 '색인 값' 을 리턴
> argmin : 최대원소의 '색인 값' 을 리턴
불리언 배열 메서드
> sum : True인 원소의 개수 반환
> any : 하나 이상의 True 값이 있는지 검사
> all : 모든 원소가 True인지 검사
정렬
> list처럼 sort 메서드를 사용한 정렬 가능
> 배열을 직접 변경
as.sort(0) : 열 고정, 서로 다른 행 끼리 정렬 = 행 별 정렬 수행
as.sort(1) : 행 고정, 서로 다른 열 끼리 정렬 = 열 별 정렬 수행
분산 구해보기(var을 사용하지 않고)
ex) 1, 3, 5의 분산 구하기
1, 3, 5의 평균 = 3
(1-3)^ + (3-3)^ + (5-3)^/3 = 1,3,5의 분산
자유도 ddof
자유도(n-1)에 따라서 var로 구한 분산의 값이 달라짐
자유도 설정은 ddof= 로 지정 가능하다.
'Python > iPython' 카테고리의 다른 글
ipython - pandas 3 (0) | 2019.02.14 |
---|---|
ipython - pandas 2 (0) | 2019.02.07 |
ipython - pandas 1 (0) | 2019.02.01 |
ipython - numpy 1 (0) | 2019.01.30 |