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

+ Recent posts