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

2024-06-16 17:43:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我在尝试为100x100二维数组指定特定值时遇到了一个问题。我希望它在任何地方都是零,除了沿着两段:从第25行到第75行的第一行和从第25行到第75行的最后一列。你知道吗

我试着用“:looping”,我的意思是:

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.

但是,出于好奇,我怎么能用:操作来完成呢?你知道吗


Tags: offorindexismy地方错误with
1条回答
网友
1楼 · 发布于 2024-06-16 17:43:12

将两个数组片放在同一方括号内。把你的问题缩小,这样就更容易表现出来:

>>> 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行。你知道吗

相关问题 更多 >