python – ‘索引0超出轴0的大小为0’是什么意思?

我是python和numpy的新手.
我运行了一个我写的代码,我收到了这条消息:
‘索引0超出轴0的大小为0’
如果没有上下文,我只想弄清楚这意味着什么……问这个可能是愚蠢的,但它们对于0轴和0号是什么意思? index 0表示数组中的第一个值..但我无法弄清楚0和0的意思.

‘data’是一个文本文件,在两列中有许多数字.

x = np.linspace(1735.0,1775.0,100)
column1 = (data[0,0:-1]+data[0,1:])/2.0
column2 = data[1,1:]
x_column1 = np.zeros(x.size+2)
x_column1[1:-1] = x
x_column1[0] = x[0]+x[0]-x[1]
x_column1[-1] = x[-1]+x[-1]-x[-2]
experiment = np.zeros_like(x)
for i in range(np.size(x_edges)-2):
    indexes = np.flatnonzero(np.logical_and((column1>=x_column1[i]),(column1<x_column1[i+1])))
    temp_column2 = column2[indexes]
    temp_column2[0] -= column2[indexes[0]]*(x_column1[i]-column1[indexes[0]-1])/(column1[indexes[0]]-column1[indexes[0]-1])
    temp_column2[-1] -= column2[indexes[-1]]*(column1[indexes[-1]+1]-x_column1[i+1])/(column1[indexes[-1]+1]-column1[indexes[-1]])
    experiment[i] = np.sum(temp_column2)   
return experiment

解决方法:

在numpy中,索引和维度编号从0开始.因此,轴0表示第一维.同样在numpy中,维度可以具有长度(大小)0.最简单的情况是:

In [435]: x = np.zeros((0,), int)
In [436]: x
Out[436]: array([], dtype=int32)
In [437]: x[0]
...
IndexError: index 0 is out of bounds for axis 0 with size 0

如果x = np.zeros((0,5),int),一个包含0行和5列的2d数组,我也会得到它.

因此,在代码中的某个位置,您将创建一个第一轴大小为​​0的数组.

在询问错误时,您应该告诉我们错误发生的位置.

此外,在调试此类问题时,首先应该打印可疑变量的形状(可能是dtype).

上一篇:为什么MySQL并不总是在这里使用索引合并?


下一篇:使用带有OR条件的MySQL JOIN中的索引