是否有任何内置函数可以丢弃整数并且只保留numpy
中的浮点数。
import numpy as np
input = np.array([0.0, 0.01, 1.0, 2.0, 2.001, 2.002])
desired_ouput = some_function(input)
# Expected ouput
# desired_output = np.array([0.01, 2.001, 2.002])
掩码每个元素是否等于整数。
arr = np.array([0.0, 0.01, 1.0, 2.0, 2.001, 2.002])
out = arr[arr != arr.astype(int)]
#np.array([0.01, 2.001, 2.002])
我不这么认为。我的方法是
import numpy as np
a = np.array([0.0, 0.01, 1.0, 2.0, 2.001, 2.002])
mask = np.isclose(a, a.astype(int))
print(a[~mask])
#[ 0.01 2.001 2.002]
我知道没有内置功能。但你可以自己创建一个:
import numpy as np
A = np.array([0.0, 0.01, 1.0, 2.0, 2.001, 2.002])
def remove_ints(arr):
return arr[~(arr == arr.astype(int))]
res = remove_ints(A)
array([ 0.01 , 2.001, 2.002])
除此之外,您不应该使用input
等内置类作为变量名。
我一直用np.equal
和np.mod
:
>>> A[~np.equal(np.mod(A, 1), 0)]
array([0.01 , 2.001, 2.002])
如果您没有太多数据(短名单),也许不需要numpy
:
>>> i = [0.0, 0.01, 1.0, 2.0, 2.001, 2.002]
>>> a=[j for j in i if not j.is_integer()]
>>> a
['0.01', '2.001', '2.002']
否则请看Joe Iddon回答
我不知道任何内置功能,但您可以使用以下方法过滤这些浮动:
filter(lambda x: int(str(x).split('.')[1]) != 0, input)
这里的lambda表达式检查小数位是否为零,我将其解释为数字为int。