0
import numpy as np

a = np.zeros((5,2,3,4), dtype=np.int16)
print a.ndim

b = np.zeros((2,3,4), dtype=np.int16)
print b.ndim

上記は私のコードです。出力は次のとおりです。

4
3

[こちら] のページを確認しました ( http://wiki.scipy.org/Tentative_NumPy_Tutorial#head-c5f4ceae0ab4b1313de41aba9104d0d7648e35cc )

a.dim = 2 または 3 を期待していましたが、4 です。なぜですか?

ヒントを教えてください。ありがとう

4

2 に答える 2

7

あなたが与えるタプルzerosと他の同様の関数は、配列の「形状」を与えます(そして、として任意の配列で利用可能ですa.shape)。次元数は、その形状のエントリ数です。

代わりに印刷len(a.shape)len(b.shape)ていて、得られる結果が期待される場合。は常にこれndimと等しくなります (そのように定義されているため)。

reshape指定したリンクは、メソッドがタプルではなく任意の数の位置引数を取ることを除いて、同じ動作を示しています。しかし、チュートリアルの例では:

>>> a = arange(15).reshape(3, 5)
>>> a
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])
>>> a.shape
(3, 5)
>>> a.ndim
2

に与えられた引数の数とreshapeによって返されたタプルの要素の数a.shapeは 2 です。

>>> a = np.arange(30).reshape(3, 5, 2)
>>> a.ndim
3

次に、同じ動作が見ndimられます。これは、numpy に指定した形状エントリの数です。

于 2013-06-08T09:10:03.983 に答える
1

zero指定した次元のゼロの配列を与える:

>>> b = np.zeros((2,3,4), dtype=np.int16)  
>>> b 
array([[[0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0]],

       [[0, 0, 0, 0],
        [0, 0, 0, 0],
        [0, 0, 0, 0]]], dtype=int16)

bあなたは三次元を与えますが、あなたaは四次元を与えます。開口部を数え[ます。

>>> a = np.zeros((5,2,3,4), dtype=np.int16)
>>> a 
array([[[[0, 0, 0, 0],
         [0, 0, 0, 0],
         [0, 0, 0, 0]],

        [[0, 0, 0, 0],
         [0, 0, 0, 0],
         [0, 0, 0, 0]]],


...

shape 指定した寸法をエコー バックします。

>>> a.shape
(5, 2, 3, 4)

>>> b.shape
(2, 3, 4)
于 2013-06-08T09:09:37.997 に答える