기록하는 습관

[Numpy] 007. 배열 내 연산 본문

Python/Numpy

[Numpy] 007. 배열 내 연산

Avalla 2023. 8. 8. 16:35
import numpy as np

배열.sum(axis=축)

샘플 배열 생성

array = np.random.randint(0,6,(3,2,4))
array
array([[[2, 1, 2, 4],
        [1, 2, 4, 0]],

       [[4, 4, 2, 0],
        [3, 1, 0, 3]],

       [[0, 2, 2, 5],
        [0, 5, 4, 3]]])
[[[2, 1, 2, 4],
 [1, 2, 4, 0]],
     [[4, 4, 2, 0],
     [3, 1, 0, 3]],
         [[0, 2, 2, 5],
         [0, 5, 4, 3]]]

 

축 방향의 이해를 돕기 위한 그림

print( array.sum(axis=0) )
[[6 7 6 9]
 [4 8 8 6]]
print( array.sum(axis=1) )
array([[3, 3, 6, 4],
       [7, 5, 2, 3],
       [0, 7, 6, 8]])
print( array.sum(axis=2) )
[[ 9  7]
 [10  7]
 [ 9 12]]
print( array.sum(axis=2).sum(axis=1) )
[16 17 21]
print( array.sum(axis=2).sum(axis=1).sum(axis=0) )
54
print( array.sum() )
54

 

배열.max(axis=축)

print(array)
[[[2 1 2 4]
  [1 2 4 0]]

 [[4 4 2 0]
  [3 1 0 3]]

 [[0 2 2 5]
  [0 5 4 3]]]
print( array.max(axis=0) )
[[4 4 2 5]
 [3 5 4 3]]
print( array.max(axis=1) )
[[2 2 4 4]
 [4 4 2 3]
 [0 5 4 5]]
print( array.max(axis=2) )
[[4 4]
 [4 3]
 [5 5]]

 

배열.mean(), 배열.std()

print( array.mean(axis=0).round(3) )
print( array.mean(axis=2) )
print( array.mean() )
[[2.    2.333 2.    3.   ]
 [1.333 2.667 2.667 2.   ]]
[[2.25 1.75]
 [2.5  1.75]
 [2.25 3.  ]]
2.25
print( array.std(axis=2).round(3) )
print( array.std() )
[[1.09  1.479]
 [1.658 1.299]
 [1.785 1.871]]
1.613743060919757

 

배열.argmax(), 배열.argmin(), 배열.argsort()

argsort 함수의 경우 다차원 행렬 전체를 비교해주지는 않으므로 평면화(flatten 또는 ravel)가 필요하다.

a = np.array([[1,2,3],[5,10,0]])
print( a )
print( "a.argmax() :", a.argmax() )
print( "a.argmin() :", a.argmin() )
print( "a.argsort() :\n", a.argsort() ) # 다차원 배열에서는 적용되지 않는다.
[[ 1  2  3]
 [ 5 10  0]]
a.argmax() : 4
a.argmin() : 5
a.argsort() :
 [[0 1 2]
 [2 0 1]]
a = np.array([1,2,3,5,10,0])
print( a )
print( "a.argmax() :", a.argmax() )
print( "a.argmin() :", a.argmin() )
print( "a.argsort() :\n", a.argsort() )
[ 1  2  3  5 10  0]
a.argmax() : 4
a.argmin() : 5
a.argsort() :
 [5 0 1 2 3 4]

 

np.수학함수(배열)

ndarray.exp() 형태의 메소드는 없음

array = np.array([[0,1],[9,100]])
print( array )
print( np.exp(array) )
print( np.log(np.exp(array)) )
print( np.sqrt(array) )
[[  0   1]
 [  9 100]]
[[1.00000000e+00 2.71828183e+00]
 [8.10308393e+03 2.68811714e+43]]
[[  0.   1.]
 [  9. 100.]]
[[ 0.  1.]
 [ 3. 10.]]