如何获得非整数元素的索引

时间:2014-04-26 08:02:49

标签: python arrays numpy

在下面的numpy数组(数据)中,如何获得非整数的索引位置,如4.5和6.7?

import numpy as np
data = np.array([2.0, 3.0, 4.5, 6.7, 12.0],dtype=float)
print data

由于我正在处理非常大的数组,因此需要考虑更快的处理速度。

2 个答案:

答案 0 :(得分:5)

速度你应该使用np.where。现在,找到元素是否为整数的一种解决方案是将其与舍入值进行比较:

np.where(data != data.round())
(array([2, 3]),)

另一种解决方案是使用nonzero

(data - data.round()).nonzero()
(array([2, 3]),)

答案 1 :(得分:3)

您可以将list comprehensionis_integer()方法结合使用。

float_data = np.array([i for i, v in enumerate(data) if v.is_integer()])

如果元素是一个整数并且实际上与下面的代码相同,那么这个列表理解会将每个元素的索引添加到数组中

float_data = []
for i, v in enumerate(data):
    if v.is_integer():
        float_data.append(i)