Как удалить значения nan и inf из матрицы numy? - PullRequest
0 голосов
/ 22 сентября 2018

Вот мой код

import numpy as np
cv = [[1,3,4,56,0,345],[2,3,2,56,87,255],[234,45,35,76,12,87]]
cv2 = [[1,6,4,56,0,345],[2,3,4,56,187,255],[234,45,35,0,12,87]]

output = np.true_divide(cv,cv2,where=(cv!=0) | (cv2!=0))
print(output)`

Я получаю значения Nan и inf. Я пытался удалить по-разному средства после удаления Nan, а затем я удалил значения Inf и заменил их на 0. Но мне нужнозаменить их вместе! Есть ли способ заменить их вместе?

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

Если вы не хотите изменять массив на месте, вы можете использовать библиотеку np.ma и создать замаскированный массив:

np.ma.masked_array(output, ~np.isfinite(output)).filled(0)

array([[1.        , 0.5       , 1.        , 1.        , 0.        ,
        1.        ],
       [1.        , 1.        , 0.5       , 1.        , 0.46524064,
        1.        ],
       [1.        , 1.        , 1.        , 0.        , 1.        ,
        1.        ]])
0 голосов
/ 22 сентября 2018

Вы можете просто заменить NaN и бесконечные значения следующей маской:

output[~np.isfinite(output)] = 0

>>> output
array([[1.        , 0.5       , 1.        , 1.        , 0.        ,
        1.        ],
       [1.        , 1.        , 0.5       , 1.        , 0.46524064,
        1.        ],
       [1.        , 1.        , 1.        , 0.        , 1.        ,
        1.        ]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...