Python:“IndexError:无效索引到0大小的数组”

时间:2013-12-07 12:26:09

标签: python arrays numpy indexing

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

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

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

为了得到一个2d图,我在另一个线程中找到了一个解决方案,你在那里光栅(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放入网格中。

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

这对几个数据文件很有用。但现在,突然之间没有。相反,它在到达网格[ida,idb] -line时报告标题中的错误。所以我在数据文件中查找了一个错误,但我找不到任何错误。我试过了

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

返回

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

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

谢谢, 爱丽丝

1 个答案:

答案 0 :(得分:1)

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

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

我从文件中导入了错误的列。一个碰巧是不变的。所以我得到了nrows = 0。而网格是0大小的阵列。

...对不起