파이썬/파이썬 심화

[파이썬 심화] 3-2. NumPy 차원 축소 연산, 정렬

  • -
반응형

차원 축소 연산

  • 최대/최소, 합, 평균, 표준편차 등 차원을 축소하는 연산
x = np.array([1,4,2,3])

print(np.sum(x)) # 합 : 10
print(np.min(x)) # 최소값 : 1
print(np.max(x)) # 최대값 : 4
print(np.argmin(x)) # 최소값의 위치 : 0
print(np.argmax(x)) # 최대값의 위치 : 1
print(np.mean(x)) # 평균 : 2.5
print(np.median(x)) # 중간값 : 2.5
  • all, any

    - all : 모든 데이터가 True면 True
    - any : 하나라도 True면 True

x = np.array([True, True, False])
print(np.all(x)) # False
print(np.any(x)) # True

y = np.array([True, True, True, True])
print(np.all(y)) # True
print(np.any(y)) # True

z = np.array([False, False, False])
print(np.all(z)) # False
print(np.any(z)) # False

a = np.zeros((100,100))
print(np.any(a!=0)) # False
print(np.all(a==a)) # True

 

  • 배열이 2차원 이상인 경우, axis 인수로 한 줄씩 계산 가능
x = np.arange(24)
x = x.reshape(2,3,4)
print(x)
'''
[[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]

 [[12 13 14 15]
  [16 17 18 19]
  [20 21 22 23]]]
'''

print(np.sum(x)) # 276

print(np.sum(x,axis=0))
'''
[[12 14 16 18]
 [20 22 24 26]
 [28 30 32 34]]
'''

print(np.sum(x,axis=1))
'''
[[12 15 18 21]
 [48 51 54 57]]
'''

print(np.sum(x,axis=2))
'''
[[ 6 22 38]
 [54 70 86]]
'''

이해하기 어려워서 그림으로 정리를 해봤습니다.

 

정렬

  • sort
a = np.array([[4,3,5,7],[1,12,11,9],[2,15,1,14]])

print(a)
'''
[[ 4  3  5  7]
 [ 1 12 11  9]
 [ 2 15  1 14]]
'''

print(np.sort(a))
'''
[[ 3  4  5  7]
 [ 1  9 11 12]
 [ 1  2 14 15]]
'''

print(np.sort(a,axis=0))
'''
[[ 1  3  1  7]
 [ 2 12  5  9]
 [ 4 15 11 14]]
'''

디폴트 값 : 행을 기준으로 비교를 해서 행 안에서 정리한다.
axis=1 : 각 배열 안에서 같은 위치에 있는 원소 (즉, 열(세로))들을 비교해서 순서대로 행에 작은 원소들을 넣는다. 
    -> 첫 번째 행 : 열 중에서 첫 번째로 작은 수, 두 번째 행 : 열 중에서 두 번째로 작은 수, ···
 

  • np.sort(a)와 a.sort()의 차이
a = np.array([[4,3,5,7],[1,12,11,9],[2,15,1,14]])

print(a)
'''
[[ 4  3  5  7]
 [ 1 12 11  9]
 [ 2 15  1 14]]
'''

print(np.sort(a)) # 정렬된 값을 '반환'
'''
[[ 3  4  5  7]
 [ 1  9 11 12]
 [ 1  2 14 15]]
'''
print(a) # 원본은 그대로
'''
[[ 4  3  5  7]
 [ 1 12 11  9]
 [ 2 15  1 14]]
'''

print(a.sort()) # 반환 값 '없음'
# None
print(a) # 원본이 바뀜
'''
[[ 3  4  5  7]
 [ 1  9 11 12]
 [ 1  2 14 15]]
'''

 

  • 자료 순서만 알고 싶다면 - argsort
a = np.array([[4,3,5,7],[1,12,11,9],[2,15,1,14]])

print(a)
'''
[[ 4  3  5  7]
 [ 1 12 11  9]
 [ 2 15  1 14]]
'''

print(np.argsort(a))
'''
[[1 0 2 3]
 [0 3 2 1]
 [2 0 3 1]]
'''
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 구독, 공감 부탁드립니다.