заменить значения в массиве - PullRequest
15 голосов
/ 26 ноября 2009

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

например:

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. спасибо за любой ответ

Ответы [ 3 ]

31 голосов
/ 26 ноября 2009

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

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 .

14 голосов
/ 17 октября 2011

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

a = numpy.nan_to_num(a)
0 голосов
/ 28 февраля 2017

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

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

Вы можете использовать функции numpy.where и numpy.isnan для создания нового массива b:

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

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

np.place(a, np.isnan(a), 0)  # returns None
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...