在尝试将值填充到数组时,我遇到了一个索引错误,但我不明白为什么会出现这个错误。
Hist = HistData[:pos, :]
if Hist.shape[0] != 0:
for y in range(2012, 2019):
hist_pos = 0
YearHist = np.zeros((150000, 1))
for k in range(Hist.shape[0]):
tm = time.gmtime(Hist[k, 0])
if tm.tm_year == y:
YearHist[hist_pos, 0] = Hist[k, vartype]
hist_pos+=1
YearHist = YearHist[:hist_pos]
这是有问题的代码片段。这被设置到以前运行得很好的代码中。对象";Hist";是一个Nx11 2d阵列。N是从较大的数据结构中获取的非零条目的数量。有时它可以是零,但为了设置年度数组,我忽略了这些值。
当我运行代码时,我得到:
追踪(最近一次通话(:
文件";YearlyHistoPlots.py";,第34行,在中
YearHist[hist_pos, 0] = Hist[k, vartype]
IndexError:索引1超出大小为0的轴0的界限
这让我很困惑。我明确地将YearHist定义为具有大小为150k的轴0,而每当Hist具有大小为零的轴0时,这行代码就不应该执行。我缺了什么吗?
问题出在最后一行,你不小心把它放在了for-k循环中,但它属于for-y循环。删除一个选项卡,你应该没事。
YearHist = YearHist[:hist_pos]
成为
YearHist = YearHist[:hist_pos]