Подтвердить что ты не робот

Как удалить все строки в numpy.ndarray, которые содержат нечисловые значения

В основном, я делаю анализ данных. Я читаю в наборе данных как numpy.ndarray, и некоторые из значений отсутствуют (либо просто не присутствуя там, будучи NaN, либо будучи строкой, написанной "NA" ).

Я хочу очистить все строки, содержащие любую запись, подобную этой. Как это сделать с помощью numpy ndarray?

4b9b3361

Ответ 1

>>> a = np.array([[1,2,3], [4,5,np.nan], [7,8,9]])
array([[  1.,   2.,   3.],
       [  4.,   5.,  nan],
       [  7.,   8.,   9.]])

>>> a[~np.isnan(a).any(axis=1)]
array([[ 1.,  2.,  3.],
       [ 7.,  8.,  9.]])

и переназначьте это на a.

Объяснение: np.isnan(a) возвращает аналогичный массив с True, где NaN, False в другом месте. .any(axis=1) уменьшает массив m*n до n с логической операцией or во всех строках, ~ инвертирует True/False и a[ ] выбирает только строки из исходного массива, которые имеют True в скобках.