uint8 type float dtype array python numpy

python - type - Filtrar enteros en una matriz numpy float



numpy to float (6)

¿Hay alguna función incorporada para descartar números enteros y mantener solo el número flotante en 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])


Enmascarar si cada elemento es igual a él como un entero.

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])


No conozco ningún componente incorporado para esto, pero puedes filtrar esos flotadores usando:

filter(lambda x: int(str(x).split(''.'')[1]) != 0, input)

La expresión lambda aquí verifica si los lugares decimales son cero, lo que interpreto como el número que es un int.


No conozco ninguna función incorporada. Pero puedes crear uno tú mismo:

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])

Aparte, no debes usar una clase incorporada como input como nombre de variable.


No lo creo. Mi enfoque sería

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]


Si no tiene demasiados datos (lista corta), tal vez no necesite 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'']

De lo contrario veremos la respuesta de Joe Iddon.


Siempre he usado np.equal con np.mod :

>>> A[~np.equal(np.mod(A, 1), 0)] array([0.01 , 2.001, 2.002])