3 回答

TA貢獻1869條經驗 獲得超4個贊
你可以這樣做:
arr = numpy.nan_to_num(numpy.log(matrix))
nan_to_num 的行為將所有 NaN 替換為零。
您可以在這里找到更多信息:
另一種選擇是將掩碼傳遞給where=
np.log 函數(shù)的參數(shù)。

TA貢獻1789條經驗 獲得超10個贊
np.log是一個ufunc帶where參數(shù)的。這告訴它哪些元素x將用于計算。其余的被跳過。這最好與out參數(shù)一起使用,如下所示:
In [25]: x = np.array([1.,2,0,3,10,0])
In [26]: res = np.zeros_like(x)
In [27]: idx = x>0
In [28]: np.log(x)
/usr/local/bin/ipython3:1: RuntimeWarning: divide by zero encountered in log
#!/usr/bin/python3
Out[28]:
array([0. , 0.69314718, -inf, 1.09861229, 2.30258509,
-inf])
In [29]: np.log(x, out=res, where=idx)
Out[29]:
array([0. , 0.69314718, 0. , 1.09861229, 2.30258509,
0. ])
添加回答
舉報