Numpy:2d数组,在第一个索引上运行时出错

时间:2014-06-13 15:35:41

标签: python arrays numpy

我在尝试为100x100 2d阵列分配特定值时遇到问题。除了沿着两段之外,我希望它在任何地方都是零:从第25行到第75行的第一行和从第25行到第75行的最后一行。

我尝试使用":循环",我的意思是:

my_array[0][25:75] = 1.
my_array[25:75][99] = 1.

但第二行返回错误:

IndexError: index 99 is out of bounds for axis 0 with size 50

好像是第一次切割长度为50(75-25)的数组,然后用它进行分配。

当然,我可以得到我想要的东西:

for x in xrange(25,75):
    my_array[x][-1] = 1.

但是,出于好奇,我怎么能用:操作完成它?

1 个答案:

答案 0 :(得分:2)

将两个数组切片放在相同的方括号内。使问题变小,以便更容易显示:

>>> my_array = np.zeros((10,10))
>>> my_array[0, 2:7] = 1
>>> my_array[2:7, -1] = 1
>>> my_array
array([[ 0.,  0.,  1.,  1.,  1.,  1.,  1.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  1.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  1.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  1.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  1.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  1.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.]])

现在发生的事情是你要求这个阵列的50行切片,然后[99]试图获得的第99行,但只有50。