【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...)はどのように理解しますか?
出力:
2.PythonのNumpyライブラリのnp.sum(array,axis=(0,1,2))はどのように理解しますか?
出力:
比較説明: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
簡単ではありませんが、よく理解できる方法は、あなたの入力マトリクスの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+18 ,40 1+7+13+19 。 :axis = 0 , 4 [3 2] 。
2. :
[[ 6 9]
[24 27]
[42 45]
[60 63]]
6 0+2+4 ,9 1+3+5 。 :axis = 1 , [4 3 2] 3 3 , 0 2 4 , 3 。
3. :
[[ 1 5 9]
[13 17 21]
[25 29 33]
[37 41 45]]
1 0+1 ,5 2+3 。 :axis = 2 , [4 3 2] 2 2 , 0 1 , 2
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