1. 연산 (기본 집계 연산)
1) 기본적으로 python 연산보다 numpy 내장 메소드를 사용하는 것이 빠르다.
ndarray일 경우, A.min() 으로 해주면 알아서 numpy연산이 됨
2) 다차원일 경우에도 동일하다. (행과 열이 생길뿐)
집계 함수 총 정리
2. 연산 (브로드캐스팅)
1) 브로드캐스팅에는 다음과 같은 규칙이 있다.
규칙 1 : 두 배열의 차원이 다르면, 작은 차원의 배열을 1로 간주하여 같은 차원으로 만든다.
규칙 2 : 두 배열의 차원이 다르고, 행열도 일치하지 않는다면 행 또는 열 중 1인 값이 늘어난다.
규칙 3 : 두 배열의 차원이 다르고, 행열도 다르며, 1도 없으면 오류가 발생함.
Ex 1) 규칙 1처럼 차원이 다르기 때문에, 1차원 배열을 (1,3)인 2차원 배열로 간주하여 연산함.
Ex 2) 규칙 2처럼 차원도 다르고, 행열도 다른 경우.
차원을 똑같이 만들어준다음에, 1을 3으로 늘려서 (3,3) + (3,3) 으로 연산함.
Ex 3) 차원, 행열이 모두 다르고, 1도 없다면 연산이 불가.
(3,2) 와 (1,3)은 연산이 불가능.
3. bool 연산
1) bool 연산자와 기본 연산은 다음과 같다.
2) 요소개수 세기 np.count_nonzero( )
요소확인 np.any( ), np.all( )
False는 0, True =1로 해석하기 때문에, nonzero = True로 생각하면됨.
데이터 중 하나라도 참이 있는지 -> any
데이터 모두가 참인지 -> all
다차원 행렬의 경우, axis를 정해서 검사할 수도 있음. (axis = 0 이면 세로, axis = 1 은 가로)
4. Fancy Indexing
배열 안에 인덱스 배열을 넣어서, 배열의 값을 빠르게 찾아내는 것을 말함.
1) 1차원에서의 팬시 인덱싱.
2) 2차원에서의 인덱싱
행과 열 번호를 배열로 만들어서 전달.
3) 일반 인덱싱 + 팬시인덱싱
행 또는 열 중 하나를 일반적으로 하고, 나머지를 배열로 하면 다음과 같은 값을 쉽게 만들 수 있음.
4) 값 변경하기
다음과 같이 부분 값 변경, 연산이 가능하다.
하지만 중복되는 인덱스나 값을 넣게 되면 이상한 결과가 발생할 수 있다.
5. 정렬
기존 C나 Java에서의 삽입정렬, 선택 정렬, 병합 정렬, 퀵 정렬, 버블 정렬 등은 필요가 없다.
1) np.sort( ), np.argsort( )
argsort는 정렬 될 인덱스를 반환함.
팬시 인덱스에 사용할 수 있음.
2차원 배열에서의 정렬도 똑같다.
2) 가장 작은 값 n개 찾기. np.partition( )
partition을 사용하면, x에서 가장 작은 값 3개만 찾아서 맨 왼쪽부터 채우고 나머지 값들은 랜덤으로 채워나간다.
2차원 배열에서의 사용도 똑같다.
'Python > Numpy' 카테고리의 다른 글
11. Numpy 재정리 - 생성, 인덱싱, 슬라이싱, 재구조화 (0) | 2020.02.13 |
---|---|
9. python numpy 메소드 (0) | 2019.10.03 |