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.为什么?
你可以给我一些提示吗? 感谢答案 0 :(得分: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的形状条目数。
答案 1 :(得分: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)