본문 바로가기
파이썬(Python)

넘파이 / numpy 4 - 축 변경, 유니버셜 함수

by 무지성개발자 2021. 8. 4.

- 데이터 준비 -

arr = np.arange(15).reshape((3,5))
arr, arr.shape, arr.dtype

arr2 = np.arange(24).reshape((2,3,4))
arr2, arr2.shape


numpy 축 변경 => T


.T : 단순 교환과 2차원 교환 까지는 T로 해결가능합니다.

arr.T, arr.shape

arr2.T, arr2.T.shape

# T는 무조건 대칭점으로 반점됩니다.


numpy 축 변경 => transpose


.transpose() : 다차원 교환은 transpose로 해결가능합니다.

arr.transpose(), arr.transpose().shape

arr.transpose((1,0)), arr.transpose((1,0)).shape

# 1번 축과 0번 축을 교환

arr2.transpose((2,0,1)), arr2.transpose((2,0,1)).shape

# transpose는 축을 자유롭게 교환할 수 있어서 shape 변화가 용이합니다.

# reshape 는 순서대로 배치되는 것이고, transpose는 축교환과 데이터가 뒤섞이는 것입니다.


numpy 유니버셜 함수 => sqrt(제곱근), exp(지수함수), log(로그함수)


test = np.arange(10)

np.sqrt( ) : 제곱하여 a가 되는 수를 a의 제곱근이라고 합니다.

np.sqrt(test)

 

np.exp(  ) : a > 0이고 a ≠ 1일 때, 함수 y = a*을 a를 밑으로 하는 *의 지수함수라 합니다.

np.exp(test)

 

np.log(  ) : 로그함수는 지수함수의 역함수입니다.

np.log(np.exp(test))


numpy 유니버셜 함수 => max/min(최대/최소값), maximum/minimum, argmax/argmin


x = np.random.randn(5)
y = np.random.randn(5)
x, y

 

max/min(  ) : 배열 데이터 중 가장 큰/작은 값을 출력합니다.

np.max(x), np.max(y), np.min(x), np.min(y)

 

argmax/argmin(  ) : 가장 큰/작은 값을 가진 원소의 인덱스를 출력합니다.

np.argmax(x), np.argmin(y)

 

 

maximum/minimum(  ) : 각 원소끼리 자리별로 비교하여 큰/작은 값을 출력합니다.

np.maximum(x, y), np.minimum(x, y)


numpy 유니버셜 함수 => modf(정수와 소수 분리), where(조건절), mean(평균), cumsum(누적합)


np.modf(x)

# np.modf(x)[1], [0] 으로 정수부분, 소수부분을 따로 출력할 수 있습니다.

# b, a = np.modf(x) 로 정수부분, 소수부분을 따로 출력할 수 있습니다.

 

b, a = np.modf(x)
b

where(  )

np.where(x>0, x, y) : x가 0초과면 x의 원소를 출력하고, 거짓이면 y를 출력합니다.

 

mean(  )

np.mean(x) : x 원소의 평균값을 출력합니다.

-데이터 준비-

z = np.arange(20).reshape(5, 4)
z

np.mean(z, axis=1) : 가로의 평균을 출력합니다.

 

cumsum(  ) : 누적합을 출력합니다.

z.cumsum(), z.sum()

 

z.cumsum(0) : 종으로 누적합을 출력합니다.

z.cumsum(1) : 횡으로 누적합을 출력합니다


numpy 유니버셜 함수 => sum/any/all(결측치 확인), unique(중복제거), in1d(검사)


결칙치 확인

 

- 데이터 준비 -

arr3 = np.array([True, False, True, False])
arr3

 

np.sum(arr3) : 참을 1, 거짓을 0으로 해석합니다.

arr3.any() : 배열의 구성요소들 중에 1개 이상 참 값이 존재하는지?

arr3.all() : 배열의 구성요소들이 모두 참인지?

 

np.sum(arr3), arr3.any(), arr3.all()

- 데이터 준비 - 

arr4 = np.array([4,3,2,1,2,4,5,1])

np.unique(arr4) : 배열의 구성요소들 중 중복요소를 제거하고 정렬해서 출력합니다.

 

np.in1d(arr4, [1,2,5]) : 해당 원소들이 대상 배열에 포함되어 있으면 참의 결과값으로 출력합니다.


numpy 유니버셜 함수 => intersect1d/union1d/setdiff1d/setxor1d(집합계열)


- 데이터 준비 -

x = np.array([1,2,3,4,5])
y = np.array([4,5,6,7,8,9])
x, y

 

np.intersect1d(x, y) : x, y 교집합

np.union1d(x, y) : 합집합

np.setdiff1d(x, y) : 차집합

np.setxor1d(x, y) : 대칭차집합 : 두 배열에 모두 포함되지 않는 원소들 (즉 x에 포함되지 않는 원소들과 y에 포함되지 않는 원소들의 합집합)