Вопрос

в качестве значения замены для другого в операции с массивами или как искать в массиве и заменять значение другим

например:

array ([[NaN, 1., 1., 1., 1., 1., 1.]
       [1., NaN, 1., 1., 1., 1., 1.]
       [1., 1., NaN, 1., 1., 1., 1.]
       [1., 1., 1., NaN, 1., 1., 1.]
       [1., 1., 1., 1., NaN, 1., 1.]
       [1., 1., 1., 1., 1., NaN, 1.]
       [1., 1., 1., 1., 1., 1., NaN]])

где он может заменить NaN на 0. спасибо за любой ответ

Это было полезно?

Решение

Вы можете сделать это:

import numpy as np
x=np.array([[np.NaN, 1., 1., 1., 1., 1., 1.],[1., np.NaN, 1., 1., 1., 1., 1.],[1., 1., np.NaN, 1., 1., 1., 1.], [1., 1., 1., np.NaN, 1., 1., 1.], [1., 1., 1., 1., np.NaN, 1., 1.],[1., 1., 1., 1., 1., np.NaN, 1.], [1., 1., 1., 1., 1., 1., np.NaN]])
x[np.isnan(x)]=0

np.isnan (x) возвращает логический массив, который равен True , где x равен NaN . x [boolean_array] = 0 использует указание на должность юриста Значение 0 везде, где логический массив равен True .

Отличное введение в модную индексацию и многое другое см. также в numpybook .

Другие советы

В эти дни есть специальная функция:

a = numpy.nan_to_num(a)

Вот пример массива в вопросе:

import numpy as np
a = np.where(np.eye(7), np.nan, 1)

Вы можете использовать numpy.where и numpy.isnan работают для создания нового массива <код> б :

b = np.where(np.isnan(a), 0, a)

Или используйте встроенную функцию для непосредственного изменения массива a :

np.place(a, np.isnan(a), 0)  # returns None
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top