【发布时间】:2018-05-23 20:11:38
【问题描述】:
这行得通:
>>> a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
>>> a[: , 2]
array([ 3, 7, 11])
这不是
>>> a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11]])
>>> a[:,2]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: too many indices for array
为什么会这样?
【问题讨论】:
-
@MatthewCurry 这是故意的。因此问题。为什么这很重要?
-
print(a)表明a的解释不同 - 第一个是二维 numpy 数组,第二个是三个列表[list([1, 2, 3, 4]) list([5, 6, 7, 8]) list([9, 10, 11])]的一维数组。 -
Numpy 追求性能,因此必须设置类型。好久没用了,不过我猜是最后一个数组的类型不一样:长度是3而不是4。numpy不能做出正常的假设,所以会报错