我有一个形状为(6,4)的ndarray bla
。当我打印时,我得到:
[[0. 1. 1. 1.]
[0. 0. 0. 2.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]
都很正常。
但是,当我尝试从中获取元素bla[0][0]
时,我会得到IndexError: invalid index to scalar variable.
我可以使用bla[0]
来获得第一行,该行将返回[0. 1. 1. 1.]
(按预期方式)。但是,我无法获得像bla[:,0]
这样的第一列-这将返回IndexError: too many indices for array
我以为我已经犯了某种用户错误,但是在检查并重新检查之后,我无法理解可能是什么问题。执行np.zeros((6,4))[0][0]
可以正常工作。
UPDATE1
另一个奇怪的现象:np.zeros((6,4))==np.zeros(bla.shape)
给出True,而np.zeros(bla.shape)[0][0]
给出错误,而np.zeros((6,4))[0][0]
正常工作(直接从输出:bla.shape: (6, 4)
)
repr(bla):
array([[0., 1., 1., 1.],
[0., 0., 0., 2.],
[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]])
UPDATE2 pickle.dumps(bla)给出了这个:
b'\x80\x03cnumpy.core.multiarray\n_reconstruct\nq\x00cnumpy\nndarray\nq\x01K\x00\x85q\x02C\x01bq\x03\x87q\x04Rq\x05(K\x01K\x06K\x04\x86q\x06cnumpy\ndtype\nq\x07X\x02\x00\x00\x00f8q\x08K\x00K\x01\x87q\tRq\n(K\x03X\x01\x00\x00\x00<q\x0bNNNJ\xff\xff\xff\xffJ\xff\xff\xff\xffK\x00tq\x0cb\x89C\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00q\rtq\x0eb.'