Numpy 切片 - 奇怪的行为

Numpy Slicing - Strange behavior

我对 Numpy 有疑问。基本上我只想在 for 循环中做一个简单的赋值。但奇怪的是,这不起作用。这是我的示例代码:

import numpy as np
test = np.zeros((1280,),dtype=int)
idx = 0
for i in range(32):
       test[idx:idx+40] = np.ones((40,),int)*1
       idx = idx + 1
print(np.where(test==0))

我会假设在循环后 test 中的所有值都等于 1,但是我程序的输出是 (array([ 71, 72, 73, ..., 1277, 1278, 1279]),) 我不明白为什么数组中仍然有 0 值。特别是对于索引 72 处的示例,它处于循环的第二次迭代的中间。

你能帮帮我吗? 谢谢!

idx 的最大值在您使用它进行索引时将为 31,因此在您增加它之前。从数组索引 31 开始,您会将 40 个元素设置为 1。最后一个这样的元素位于索引 31+39,即 70。索引 71 处的元素仍然为 0。