Как удалить значения nan из numpy.ndarray - PullRequest
0 голосов
/ 11 ноября 2019

У меня есть несколько переменных numpy.ndarray. Они включают в себя значения наночастиц, и я хочу отбросить каждое значение наночастиц из них. Массивы содержат значения типа int, float, str и т. Д. Пример этих массивов:

['A' 'B' 'C' 'D' nan 'E' 'F']

еще один:

[nan  1.]

И может быть случай, когда массив содержит значения float, str и nan. В этом случае, как я могу отбросить только значения nan?

Я использовал следующий код:

x[:, ~np.isnan(x).any(axis=0)]

и получил следующую ошибку:

ufunc 'isnan' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''

Ответы [ 2 ]

0 голосов
/ 11 ноября 2019

Вероятно, это связано с тем, что np.isnan() не в состоянии обрабатывать строковые типы среди возможных типов элементов в коллекции. Вы можете попробовать использовать panda's isnull() для удаления NaN значений.

import pandas as pa
import numpy as np

a = ['A', np.nan, np.nan, 1.67, 8]
a = [x for x in a if not pa.isnull(x)]
print(a)
0 голосов
/ 11 ноября 2019

В пандах есть функция pandas.DataFrame.dropna, которая удаляет все столбцы со значениями nan. Просто создайте DataFrame, если вы этого не сделали, и выполните df.dropna().

...