这是我的代码
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.但是我需要一起替换它们!有什么办法可以一起替换它们?
答案 0 :(得分:5)
您可以使用以下掩码替换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. ]])
答案 1 :(得分:2)
如果您不想就地修改数组,则可以使用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. ]])
答案 2 :(得分:0)
有一个专门的功能用于
numpy.nan_to_num(x_arr, copy=False, nan=0.0, posinf=0.0, neginf=0.0)