在下面的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
由于我正在处理非常大的数组,因此需要考虑更快的处理速度。
答案 0 :(得分:5)
速度你应该使用np.where
。现在,找到元素是否为整数的一种解决方案是将其与舍入值进行比较:
np.where(data != data.round())
(array([2, 3]),)
另一种解决方案是使用nonzero
:
(data - data.round()).nonzero()
(array([2, 3]),)
答案 1 :(得分:3)
您可以将list comprehension与is_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)