IndexError: index X is out of bounds for axis 0 with size Y (Python)

IndexError: index X is out of bounds for axis 0 with size Y (Python)

我对 Python 很陌生,所以我可能只是在监督一些事情:

创建随机 8x8 numpy.ndarray 后,我尝试使用“for”循环将所有 0 值更改为 1。

以下代码无效:

rng = np.random.default_rng()
y=rng.integers(10,size=(8,8))
for i in range (0,len(np.where(y==0)[0])):
    y[np.where(y==0)[0][i],np.where(y==0)[1][i]] = 1

我收到“IndexError: index X is out of bounds for axis 0 with size Y”错误,其中由于 y 数组的随机性,X 和 Y 不断变化。

但是,如果我添加一些变量而不是一次编写整个代码,它就可以工作。代码如下所示:

rng = np.random.default_rng()
y=rng.integers(10,size=(8,8))
index_x,index_y=np.where(y==0)
for i in range(0,len(index_x)):
    y[index_x [i],index_y[i]] = 1

有人可以向我解释为什么第一个代码不起作用,尽管两个代码基本相同吗?

提前致谢,新年快乐!

不要为此使用 for 循环,试试这个:

rng = np.random.default_rng()
y=rng.integers(10,size=(8,8))

y[y==0] = 1