팬시 인덱싱 (Fancy indexing)
- 정수 배열 인덱스
- 리스트나 ndarray로 인덱스 집합을 지정하면 해당 위치의 인덱스에 해당하는 ndarray를 반환.
- 정수나 불린(Boolean) 값을 가지는 다른 Numpy 배열로 배열을 인덱싱할 수 있는 기능을 의미.
- Boolean 값을 가진 배열을 사용하여 직관적으로 인덱싱 가능
- [ ] : 대괄호 사용 → [ [ ] , ] : 대괄호 안에 넣으면 반환 값이 ndarray가 됨.
- [ , ] : 대괄호 안에 , 사용
- [ , ] , [ , ] : (0, 0) (1, 1)의 값이 들어가있는 ndarray를 반환.
슬라이싱을 할 때는 큰 범위로 붙어있는 값만 추출할 수 있지만
팬시 인덱싱은 원하는 요소만 추출할 수 있음.
배열 크기 변환
reshpae(차원)
- 배열.reshape(차원)
- 배열과 차원을 변형해주는 reshape 함수.
- np.reshape(변경할 배열, 차원)
reshape ( -1)
-1의 의미는 변경된 배열의 '-1' 위치의 차원은
'원래 배열의 길이와 남은 차원으로 부터 추정'
하지만, -1로 지정하였어도
ex ) arr.reshape(3, -1)로 바꾼다면 에러가 남.
데이터가 총 32개일 때 열을 3개로 만든다면
[ [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ],
[ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 ],
[ 22, 23, 24, 25, 26, 27, 28, 29, 31, , ] ]
빈공간이 생기기 때문에 에러 발생!
flatten ( )
- 배열.flatten()
- 다차원 배열 공간을 1차원으로 평탄화해주는 함수.
배열 전치와 축 바꾸기
T
- arr.T
- 행 → 열 / 열 → 행
transpose
- arr.transpose(행, 열) / 2차원
- arr.transpose(차원, 행, 열)
- 괄호 안에 입력한 것은 axis 번호이다.
swapxes
- arr.swapxes( )
- 2차원이든 3차원이든 2개를 쓸 수만 있음.
- 3차원 → (층, 행)
배열 결합
hstack
- np.hstack( [arr1, arr2] )
- 행의 수가 같은 두 개 이상의 배열을 옆으로 연결
vstack
- np.vstack( [ arr1, arr2 ])
- 열의 수가 같은 두 개 이상의 배열을 위 아래로 연결
dstack
- np.dstack( [ c1, c2 ] )
- 깊이 방향으로 배열을 합침
tile
- np.tile(배열, 반복횟수)
- 동일한 배열을 반복 횟수만큼 이어 붙이는 함수
2차원 그리드 포인트 생성
meshgrid
- 변수가 2개인 2차원 함수의 그래프를 그리거나 표를 작성하려면 2차원 영역에 대한 (x, y) 좌표값 쌍 필요 그리드 포인트(grid point)를 생성하여 각 좌표에 대한 함수 값을 계산
np.meshgrid(xi,
copy = True,
sparse = False,
indexing = 'xy')
xi | 그리드에 나타낼 1차원 배열 백터 |
copy | Flase가 되면 메모리 절약을 위해 오리지널 배열로 반환 |
sparse | True로 하면 메모리 정략을 위해 희소 그리드를 반환 |
indexing | 카테시안 인덱스(일반좌표) 표시를 원하면 'xy', 행렬 인덱스는 'ij' |
브로드캐스팅
- 넘파이에서는 서로 다른 크기를 가진 두 배열의 사칙 연산 지원.
- 작은 배열을 자동으로 반복 확장하여 크기가 큰 배열에 맞추는 방법.
- 배열의 개수가 맞지 않아 연산을 하지 못하는 상황에서 배열을 맞추어 줌.
차원축소
- 1차원 백터로 나오는 것
- 최대/최소: min, max, argmin, argmax
max(데이터) | 데이터 중 최대값을 반환 |
np.argmax(데이터) | 최대값이 "어디에 있는지" 반환 → 인덱스 값 반환 |
min(데이터) | 데이터 중 최소값을 반환 |
np.argmin() | 최소값이 "어디에 있는지" 반환 → 인덱스 값 반환 |
통계: sum, mean, median, std, var
불리언: all, any
기술통계
- 데이터의 개수(count)
- 평균(mean, average)
- 분산(variance)
- 표준 편차(standard deviation)
- 최댓값(maximum)
- 최솟값(minimum)
- 중앙값(median)
- 사분위수(quartile)
조건 만족하는 인덱스 찾기
where
np.where (condition - 조건식,
x - condition이 True일 경우 반환값,
y - condition이 False일 경우 반환값)
집합관련 함수
unique
numpy.unique(ar,
return_index=False,
return_inverse=False,
return_counts=False,
axis=None)
ar | 배열로 변환할 수 있는 배열 또는 객체 |
return_index | boolean. True인 경우 각 고유한 값이 처음 나타나는 인덱스 배열을 반환. |
return_inverse | boolean. True이면 입력 배열을 재구성하는 데 사용할 수 있는 고유 배열의 인덱스 반환 |
return_count | boolean. True이면 각 고유 값의 개수 배열을 반환합니다. |
axis | 고유한 행 (axis=0) 또는 열 (axis=1)을 찾습니다. 기본적으로 고유한 요소는 평면화 된 배열에서 검색됩니다. |
0부터 1까지 각각 카운트.
난수 생성
random( ) | 0 이상 ~ 1 미만 사이의 실수를 랜덤하게 반환. |
uniform( x, y ) | 두 수를 받아 (x <= n < y) 의 실수를 랜덤하게 반환. |
randint( x, y ) | 두 개의 정수를 받아 (x <= n < y)의 정수를 랜덤하게 반환. |
randange( start, end, step ) | 두 개의 정수를 받아 start <= n < end 정수를 랜덤하게 반환. |
suffle( ) | 요소를 랜덤하게 섞음. |
choice | 요소 중 한 가지를 랜덤하게 선택. |
sample( ) | 랜덤하게 정해서 숫자만큼 요소를 정해서 리스트형으로 변환 |
seed( ) | 난수 생성기 초기화. |
seed
- np.random.seed()
- 특정 시작 숫자값을 정해주면 정해진 알고리즘에 따라 마치 난수처럼 보이는 수열 생성.
choice
- 무작위 선택
numpy.random.choice(a,
size = None,
replace = True,
p = None)
a | 배열이면 원래의 데이터, 정수이면 arange(a) 명령으로 데이터 생성 |
size | 정수. 샘플 숫자 |
replace | 불리언. True이면 한번 선택한 데이터를 다시 선택 가능 |
p | 배열. 각 데이터가 선택될 수 있는 확률 |
정렬
sort
- 배열.sort() : 원본 배열의 값이 변경됨
- np.sort(배열) : 정렬된 배열의 복사본 생성, 원본은 변경 없음
'ABC 부트캠프 > 파이썬 라이브러리' 카테고리의 다른 글
10일차 - Matplotlib, Seaborn (0) | 2023.04.10 |
---|---|
9일차 - Pandas 2 (0) | 2023.04.02 |
8일차 - Pandas 1 (0) | 2023.03.27 |
6일차 - Numpy 1 (0) | 2023.03.21 |
댓글