Python 什么是';索引0超出大小为0';什么意思?
我对python和numpy都是新手。 我运行了自己编写的代码,收到了以下消息: '索引0超出大小为0的轴0的界限' 没有上下文,我只想弄明白这意味着什么。。问这个问题可能很愚蠢,但轴0和大小0是什么意思?索引0表示数组中的第一个值。。但我不知道轴0和大小0是什么意思 “数据”是一个文本文件,在两列中有许多数字Python 什么是';索引0超出大小为0';什么意思?,python,numpy,indexing,error-handling,index-error,Python,Numpy,Indexing,Error Handling,Index Error,我对python和numpy都是新手。 我运行了自己编写的代码,收到了以下消息: '索引0超出大小为0的轴0的界限' 没有上下文,我只想弄明白这意味着什么。。问这个问题可能很愚蠢,但轴0和大小0是什么意思?索引0表示数组中的第一个值。。但我不知道轴0和大小0是什么意思 “数据”是一个文本文件,在两列中有许多数字 x = np.linspace(1735.0,1775.0,100) column1 = (data[0,0:-1]+data[0,1:])/2.0 column2 = data[1,1
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
x=np.linspace(1735.01775.0100)
第1列=(数据[0,0:-1]+数据[0,1:])/2.0
第2列=数据[1,1:]
x_column1=np.零(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]
实验=np.类零(x)
对于范围内的i(np.尺寸(x_边)-2):
索引=np.flatnonzero(np.logical_和((column1>=x_column1[i]),(column1在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
)
应用于熊猫
- 当将
或系列
发送到数据帧
时,使用numpy.array
pandas的用户可能会出现相同的错误,如下所示:
- 或
- 或
试除
块如果x.size!=0:
本质上,这意味着您没有试图引用的索引。例如:
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)
将给出您所指的错误,因为我没有告诉Pandas我的数据帧有多长。然而,如果我执行完全相同的代码,但指定了索引长度,则不会出现错误:
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)
希望这能回答您的问题!这是python中的一个
索引器,这意味着我们正在尝试访问一个在张量中不存在的索引。下面是一个理解此错误的非常简单的示例
# create an empty array of dimension `0`
In [14]: arr = np.array([], dtype=np.int64)
# check its shape
In [15]: arr.shape
Out[15]: (0,)
使用此数组arr
,如果我们现在尝试将任何值分配给某个索引,例如分配给索引0
,如下所示
In [16]: arr[0] = 23
然后,我们将得到一个索引器
,如下所示:
因此,从本质上讲,这样的数组是无用的,不能用来存储任何东西。因此,在代码中,您必须跟踪回溯,寻找创建大小为0
的数组/张量的位置,并修复该问题。这可能与此相关。
IndexError Traceback (most recent call last)
<ipython-input-16-0891244a3c59> in <module>
----> 1 arr[0] = 23
IndexError: index 0 is out of bounds for axis 0 with size 0
In [19]: arr.size * arr.itemsize
Out[19]: 0