我使用for循环遍历NumPy零数组中的索引并分配一些值为0.5的索引。目前,我的代码返回错误消息:
IndexError:索引1超出轴0的大小为1
以下是我的代码的简化版本,它会重现错误。
import numpy as np
Z = np.zeros((1560, 1560))
linestart = {1: [175], 2: [865]}
noycuts = 2
cutno = int(0)
for i in range(noycuts):
cutno = cutno + 1
xstart = linestart[cutno]
ystart = 0
for j in range(1560):
Z[xstart][ystart] = 0.5
ystart = ystart + 1
我已经检查过具有相同错误代码的人的问题,尽管这些问题似乎源于最初调用数组的方式;我不认为这是我的问题。
有人能看到我的代码中导致错误消息的缺陷吗?
我希望我提供了足够的信息。
提前致谢。
答案 0 :(得分:1)
编辑:
我原来的回答是:
替换
Z[xstart][ystart] = 0.5
与
Z[xstart, ystart] = 0.5
但实际上,问题是,你的xstart是一个数组。保留原始代码,但替换
linestart = {1: [175], 2: [865]}
与
linestart = {1: 175, 2: 865}
或者,更好:
linestart = [175, 865]
答案 1 :(得分:0)
使用linestart = {1: [175], 2: [865]}
,您可以定义包含单个包含列表的dict。我相信你真的希望dict包含int。 ystart也应该从零开始。以下是否符合您的要求:
import numpy as np
Z = np.zeros((1560, 1560))
linestart = {1: 175, 2: 865}
noycuts = 2
cutno = 0
for i in range(noycuts):
cutno += 1
xstart = linestart[cutno]
ystart = 0
for j in range(1560):
Z[xstart][ystart] = 0.5
ystart = ystart + 1
还要考虑以下更短的版本:
for cutno,xstart in linestart.items():
for ystart in range(Z.shape[1]):
Z[xstart][ystart] = 0.5