更改numpy数组中的单元格值

2024-09-26 18:14:43 发布

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

当我运行此代码时:

mreza = np.zeros((9,9))
mrezanew = np.zeros((9,9))
mreza[4, 3] = 1
mreza[3, 3] = 1
mreza[3, 4] = 1
mreza[5, 4] = 1
mreza[3, 5] = 1
print(mreza)
for x in range(1,8,1):
    for y in range(1,8,1):
        vsota = mreza[x - 1, y - 1] + mreza[x, y - 1] + mreza[x + 1, y - 1] + mreza[x - 1, y] + mreza[x + 1, y] + mreza[x - 1, y + 1] + mreza[x, y + 1] + mreza[x + 1, y + 1]
        if vsota == 3:
            mrezanew[x, y] = 1
        elif vsota == 2 and mreza[x, y] == 1:
            mrezanew[x, y] = 1
        else:
            mrezanew = 0
print(mrezanew)

我在第15行得到下一个错误: TypeError:“int”对象不支持项分配


Tags: and代码inforif错误npzeros
2条回答

这是因为您的最后一个条件是mrezanew = 0。在循环的某些迭代过程中,mrezanew变量被int对象覆盖。下次循环运行时,当您尝试访问索引[x, y]时,由于int对象不支持索引,因此无法提供TypeError

在第一次迭代之后,mrezanew不再是NumPy数组。vsota在第一次迭代中为0,因此mrezanew变为整数

相关问题 更多 >

    热门问题