IndexError:只有整数,切片(`:`),省略号(```),numpy.newaxis(`None`)和整数或布尔数组才是有效索引

时间:2017-07-05 05:23:22

标签: python numpy

我正在处理代码段

top[0].data[128,0:128] = (fc1[self.keep1.tolist()])[self.keep2[128].tolist()]

keep1有数据

[
  0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, ...... 114.0, 115.0, 116.0, 117.0, 118.0, 119.0
]

keep2有数据

[ 
   125.  800.  255.  119.  801.  804.  114.  368.  636.  308.  805.  213.
   ......218.   373.
]

我遇到了一个问题" IndexError:只有整数,切片(:),省略号(...),numpy.newaxis(None)和整数或布尔数组是有效的指数"

我尝试过self.keep2 [128] .tolist()。astype(int),但确实说tolist()没有方法astype(int)

我该怎么解决?

1 个答案:

答案 0 :(得分:1)

假设您将变量变为top[0].datafc1self.keep1self.keep2都是numpy数组,那么您的解决方案太复杂了名单。

就足够了
top[0].data[128,0:128] = (fc1[self.keep1.astype(int)])[self.keep2[128].astype(int)]

如果尺寸正确。

您还应该问自己为什么keep1keep2是浮点数,而不是一开始的整数。它们是一些浮动计算的结果吗?在这种情况下,你能确定他们没有任何小数部分吗?