我在标题中出现此错误,并且不知道错误是什么。当我使用np.hstack而不是np.append时,它正在工作,但我想让它更快,所以请使用append。
time_list浮动列表
高度是1d np.array of floats
j = 0
n = 30
time_interval = 1200
axe_x = []
while j < np.size(time_list,0)-time_interval:
if (not np.isnan(heights[j])) and (not np.isnan(heights[j+time_interval])):
axe_x.append(time_list[np.arange(j+n,j+(time_interval-n))])
File "....", line .., in <module>
axe_x.append(time_list[np.arange(j+n,j+(time_interval-n))])
TypeError: only integer arrays with one element can be converted to an index
答案 0 :(得分:37)
问题正如错误所示,time_list
是一个普通的python列表,因此你不能使用另一个列表对其进行索引(除非另一个列表是一个包含单个元素的数组)。示例 -
In [136]: time_list = [1,2,3,4,5,6,7,8,9,10,11,12,13,14]
In [137]: time_list[np.arange(5,6)]
Out[137]: 6
In [138]: time_list[np.arange(5,7)]
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-138-ea5b650a8877> in <module>()
----> 1 time_list[np.arange(5,7)]
TypeError: only integer arrays with one element can be converted to an index
如果您想进行此类索引,则需要time_list
为numpy.array
。示例 -
In [141]: time_list = np.array(time_list)
In [142]: time_list[np.arange(5,6)]
Out[142]: array([6])
In [143]: time_list[np.arange(5,7)]
Out[143]: array([6, 7])
另一件需要注意的事情是,在while
循环中,您永远不会增加j
,因此它可能会以无限循环结束,您还应该将j
增加一些(也许time_interval
?)。
但根据您在评论中发布的要求 -
axe_x应该是从time_list列表
生成的1d浮点数组
您应该使用.extend()
代替.append()
,.append
会为您创建数组列表。但如果您需要一维数组,则需要使用.extend()
。示例 -
time_list = np.array(time_list)
while j < np.size(time_list,0)-time_interval:
if (not np.isnan(heights[j])) and (not np.isnan(heights[j+time_interval])):
axe_x.extend(time_list[np.arange(j+n,j+(time_interval-n))])
j += time_interval #Or what you want to increase it by.