【问题标题】:Python: "IndexError: invalid index into a 0-size array"Python:“IndexError:0 大小数组的索引无效”
【发布时间】:2013-12-07 12:26:09
【问题描述】:

显然,有很多关于索引错误的线程。但我找不到能帮助我的人。

我使用 numpy.loadtxt 读取函数 f(a,b)。

a, b, f = np.loadtxt(filename, delimiter=' ', usecols=(0,1,2), unpack=True)

为了获得二维图,我在另一个线程中找到了一个解决方案,您可以在其中栅格 (a,b) 平面并将整数元组 (ida, idb) 与每个点相关联。

ncols, nrows = np.round((a.max() - a.min()) / da).astype(np.int) , np.round((b.max() - b.min()) / db).astype(np.int)
ida = np.round((a - a.min()) / da - 1).astype(np.int)
idb = np.round((b - b.min()) / db - 1).astype(np.int)

然后将 f 放入 a 网格中。

grid = np.empty((nrows, ncols), dtype=np.float)
grid[idb, ida] = f

这适用于多个数据文件。但现在,突然就不行了。相反,它在到达 grid[ida,idb]-line 时报告标题中的错误。所以我在数据文件中寻找错误,但我找不到任何错误。我试过了

print ida.shape
print idb.shape
print f.shape

返回

(3107,)
(3107,)
(3107,)

所以所有数组的大小都匹配得很好,尤其是它们都不是空数组。我在这里错过了什么?

谢谢, 爱丽丝

【问题讨论】:

  • 有趣的对象是网格...
  • 是的,我会调查的。谢谢。
  • 你能发布完整的错误回溯吗?
  • 感谢seberg的建议,我发现了错误:在loadtxt中我从文件中导入了错误的列。一个碰巧是恒定的。所以我得到了nrows = 0。而 grid 是 0-size-array。
  • 我无法在没有答案的情况下关闭线程。直到 8 小时过去,我才能自己写答案。

标签: python arrays numpy indexing


【解决方案1】:

感谢seberg的建议,我找到了错误(我还找到了旧的stackoverflow帐户):

a, b, f = np.loadtxt(filename, delimiter=' ', usecols=(0,1,2), unpack=True)

我从文件中导入了错误的列。一个碰巧是恒定的。所以我得到了nrows = 0。而 grid 是 0-size-array。

对不起……

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-11
    • 1970-01-01
    • 2017-02-16
    • 2019-08-26
    • 2021-11-18
    • 2019-07-30
    • 1970-01-01
    相关资源
    最近更新 更多