numpy索引意外行为

时间:2019-12-03 11:27:20

标签: python numpy

我有一个形状为(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.'

0 个答案:

没有答案