Вопрос
в качестве значения замены для другого в операции с массивами или как искать в массиве и заменять значение другим
например:
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