2016-10-15 6 views
0

np.stackを使用すると、axis = 1のようにaxisを使用することがあります。私はその軸が何を意味するのか理解していません。 exmapleため、Numpyモジュールを搭載したPythonの軸とは何ですか?

c1 = np.ones((2, 3)) 
c2 = np.zeros((2, 3)) 
c = np.stack([c1, c2], axis = 1) 

これは結果を作る

array([[[1., 1., 1.], 
     [0., 0., 0.]], 

     [[1., 1., 1.], 
     [0., 0., 0.]]]) 

、好きなルールを示して?

+0

にディメンションを追加することで機能しますnumpy関連の関数...また、利用可能な関数のリストのためのdir(np)... – NaN

答えて

0

軸は寸法を意味します。簡単な例についてこれは私SUM1 = 12とSUM2 = [3,5,4]

私の配列が持つ2次元/軸を与えるnumpy.sum

import numpy as np 
a=np.array([1,2,3],[2,3,1]) 
sum1=np.sum(a,axis=0) 
sum2=np.sum(a,axis=1) 
print sum1,sum2 

を検討してください。最初の1は長さ2で、2番目の長さは3です。したがって軸を指定することによって、あなたのコードをあなたの仕事をしたい次元に沿って指示します。

numpy.ndarray.ndimはあなたが

0

を持っていますどのように多くの軸を伝えることができ、実際にSUM1は(3、5、4)を与えるとSUM2は(6,6) を与えるが、あなたのコメントは私が軸がnumpyの中でどのように機能するかを理解する助けました。ありがとう。 私が理解するように、axis = 0は列に沿って追加することを意味し、axis = 1は行に沿って追加することを意味します。

0

例では、配列は2dであり、axisは通常、これらの2つの次元の1つを参照します。関数がaxisパラメータとまったく同じものを

In [441]: c1 
Out[441]: 
array([[ 1., 1., 1.], 
     [ 1., 1., 1.]]) 
In [442]: c1.sum(axis=0) 
Out[442]: array([ 2., 2., 2.]) 
In [443]: c1.sum(axis=1) 
Out[443]: array([ 3., 3.]) 

は、関数自身に任されています。 sumの場合は、その軸に沿って「追加」され、その軸に「欠落している」値が返されます。それはそれを記述するよりも簡単です。 concatenateaxis

役割がで示されている:

In [452]: np.concatenate((c1,c2),axis=0).shape 
Out[452]: (4, 3) 
In [453]: np.concatenate((c1,c2),axis=1).shape 
Out[453]: (2, 6) 

stack次元を追加します。これは、任意のヘルプを得るために.... concatenateに比較的新しいAPIだし、最初にあなたのIDE ...種類...ヘルプ(np.stack)の各入力配列

In [448]: np.stack((c1,c2,c1,c2),axis=0).shape 
Out[448]: (4, 2, 3) 
In [449]: np.stack((c1,c2,c1,c2),axis=1).shape 
Out[449]: (2, 4, 3) 
In [450]: np.stack((c1,c2,c1,c2),axis=2).shape 
Out[450]: (2, 3, 4) 
関連する問題