Как заменить строку со значениями с плавающей точкой во вложенном массиве numpy на строку `NaN`s? - PullRequest
0 голосов
/ 03 декабря 2018

Скажем, у меня есть массив NumPy:

a=np.array([[7,2,4],[1.2,7.4,3],[1.5,3.6,3.4]])

И моя цель состоит в том, чтобы заменить строки, содержащие числа с плавающей точкой, строкой NaN с, и пока это моя попытка:

a[a.dtype==float]=np.nan

Что работает, но только первая строка должна быть NaN, есть вторая строка, которая должна быть NaN, и она остается одна.

Так что мой желаемый результат будет выглядеть так:

[[ 7.   2.   4.]
 [ nan  nan  nan]
 [ nan  nan  nan]]

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

a.dtype==float возвращает True, следовательно, это не имеет никакого смысла.Кроме того, все ваши значения являются числами с плавающей точкой (вы можете проверить это, нарезав type(a[0][0]).

. Вы можете использовать метод .is_integer для чисел с плавающей точкой, но я думаю, что np.mod будет быстрее

a[np.mod(a, 1) != 0] = np.nan
0 голосов
/ 03 декабря 2018

Попробуйте округлить:

a[np.round(a)!=a] = np.nan
#array([[ 7.,  2.,  4.],
#       [nan, nan,  3.],
#       [nan, nan, nan]])
...