【pythonノート】:2.PythonのNumpyライブラリのnp.sum(array,axis=(0,1,2))はどのように理解しますか?

7545 ワード

原理の参考:https://segmentfault.com/q/1010000010111006
簡単ではありませんが、よく理解できる方法は、あなたの入力マトリクスのshapeが(2,2,4)である場合、axis=0の場合、最初のdimensionで和を求め、最後に得られた結果のshapeは、最初のdimensionを取り除いたshape、すなわち(2,4)です.具体的な計算方法は,c[i,j,k]について,出力行列がs[j,k]であると仮定し,最初のdimension加算である.
s[j,k]=∑i(c[i,j,k]) s [ j , k ] = ∑ i ( c [ i , j , k ] )
axis=1の場合、出力shapeは2番目のdim、すなわち(2,4)を削除し、計算は
s[i,k]=sumj(c[i,j,k]) s [ i , k ] = s u m j ( c [ i , j , k ] )
axis=2の場合、出力shapeは3番目のdim、すなわち(2,2)を削除し、計算は
s[i,j]=sumk(c[i,j,k]) s [ i , j ] = s u m k ( c [ i , j , k ] )
データ処理では高次元データによく遭遇しますが、2次元マトリクスでその計算方法を考えるのは難しいですが、このときaxis対応の次元で和を求めるだけで、他の次元の位置や形状が変わらず、最後にshapeを対応する次元から外すと理解できます
1.PythonのNumpyライブラリのnp.sum(array,axis=0,1,2...)はどのように理解しますか?
import numpy as np

abc = np.arange(0,24,1).reshape(4,3,2)

print ("    [4 3 2]     :")

print (abc)

​

print ("
1. :"
) print (np.sum(abc, axis=(0, ))) print (" 36 0+6+12+18 ,40 1+7+13+19 。 :axis = 0 , 4 [3 2] 。") ​ print ("
2. :"
) print (np.sum(abc, axis = (1,))) print (" 6 0+2+4 ,9 1+3+5 。 :axis = 1 , [4 3 2] 3 3 , 0 2 4 , 3 。") ​ print ("
3. :"
) print (np.sum(abc, axis = (2,))) print (" 1 0+1 ,5 2+3 。 :axis = 2 , [4 3 2] 2 2 , 0 1 , 2 ")

出力:
    [4 3 2]     :
[[[ 0  1]
  [ 2  3]
  [ 4  5]]

 [[ 6  7]
  [ 8  9]
  [10 11]]

 [[12 13]
  [14 15]
  [16 17]]

 [[18 19]
  [20 21]
  [22 23]]]

1.[[36 40]
 [44 48]
 [52 56]]
    36 0+6+12+1840 1+7+13+19   。       :axis = 04 [3 2]          。

2.[[ 6  9]
 [24 27]
 [42 45]
 [60 63]]
    6 0+2+49 1+3+5   。       :axis = 1 , [4 3 2]     3 30 2 433.           :
[[ 1  5  9]
 [13 17 21]
 [25 29 33]
 [37 41 45]]
    1 0+15 2+3   。       :axis = 2 , [4 3 2]      2 20 12   

2.PythonのNumpyライブラリのnp.sum(array,axis=(0,1,2))はどのように理解しますか?
import numpy as np

abc = np.arange(0,24,1).reshape(4,3,2)

print ("    [4 3 2]     A :")

print (abc)

print ("
1. B :"
) d = np.sum(abc, axis=(0, )) print (d) e = np.sum(d, axis=(1, )) print ("
2. B C :"
) print (e) print("
3. A , D:"
) print (np.sum(abc, axis=(0, 2))) print ("
:axis=(0,2) A[4 3 2] ,\ , B[3,2],A 2, B , B[3 2] C[3,]。\ C D , 。"
)

出力:
    [4 3 2]     A :
[[[ 0  1]
  [ 2  3]
  [ 4  5]]

 [[ 6  7]
  [ 8  9]
  [10 11]]

 [[12 13]
  [14 15]
  [16 17]]

 [[18 19]
  [20 21]
  [22 23]]]

1.          B :
[[36 40]
 [44 48]
 [52 56]]

2.  B        C :
[ 76  92 108]

3.  A       ,        D:
[ 76  92 108]

比較説明:axis=(0,2)は配列A[4 3 2]の1次元を先に加算し、加算した後、配列B[3,2]となり、Aの3次元は大きさが2で、Bの中で2次元になったので、B[32]の2次元加算はC[3,]となる.ここで我々が段階的に和を求めて得たCと一歩的に和を求めたDは一致し,我々の推測が正しいことを証明した.
具体的なコードは私のgithub倉庫:JackKuo 666/csdn/python-numpy-sum/PythonのNumpyライブラリのnpにアクセスしてください.sum(array,axis=0,1,2...)はどのように理解しますか?のipynb