“索引0超出大小为0的轴0的边界”是什么意思?

2024-04-26 03:26:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python和numpy都不熟悉。 我运行了一个我编写的代码,得到了一条消息: '索引0超出大小为0的轴0的边界' 没有上下文,我只想弄明白这意味着什么。。问这个问题可能很傻,但它们表示轴0和大小0是什么意思?索引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

Tags: 代码numpy消息datasizenpzeros数组
2条回答

从本质上说,这意味着您没有试图引用的索引。例如:

df = pd.DataFrame()
df['this']=np.nan
df['my']=np.nan
df['data']=np.nan
df['data'][0]=5 #I haven't yet assigned how long df[data] should be!
print(df)

会告诉我你所指的错误,因为我还没有告诉熊猫我的数据帧有多长。然而,如果我执行完全相同的代码,但我确实分配了索引长度,则不会出现错误:

df = pd.DataFrame(index=[0,1,2,3,4])
df['this']=np.nan
df['is']=np.nan
df['my']=np.nan
df['data']=np.nan
df['data'][0]=5 #since I've properly labelled my index, I don't run into this problem!
print(df)

希望这能回答你的问题!

numpy中,索引和维度编号以0开头。所以axis 0表示第1维。同样在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列的二维数组,我也会得到它。

所以在代码中的某个地方,您正在创建一个第一个轴大小为0的数组。

询问错误时,希望您告诉我们错误发生的位置。

同样,在调试此类问题时,首先应该打印可疑变量的shape(可能还有dtype)。

相关问题 更多 >