我有一个二维数组a
和一个二维数组b
。我需要计算c =a/b
,
因此有一些inf
或NaN
对象。如何使用numpy进行检查并将其设置为np.nan
?
这是我的代码:
import numpy as np
a=np.asarray([[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]])
b=np.asarray([[1,2,0,4,5],[1,2,0,4,5],[1,2,0,4,5],[1,2,3,4,5]])
c=a/b
b=np.where(isinstance(c, float),np.nan,c)
答案 0 :(得分:1)
我不确定,如果我错了,请纠正我。您是在计算c = a / b之后引用c中的inf对象。
以下是示例代码:
import numpy as np
np.seterr(divide='ignore', invalid='ignore') #To avoid RuntimeWarning: divide by zero encountered in true_divide after removing the cwd from sys.path.
a=np.asarray([[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]])
b=np.asarray([[1,2,0,4,5],[1,2,0,4,5],[1,2,0,4,5],[1,2,3,4,5]])
c=a/b
print(c)
[[ 1. 1. inf 1. 1.]
[ 1. 1. inf 1. 1.]
[ 1. 1. inf 1. 1.]
[ 1. 1. 1. 1. 1.]]
c[np.isinf(c)] = np.nan #Finds inf object and replace with nan.
print(c)
[[ 1. 1. nan 1. 1.]
[ 1. 1. nan 1. 1.]
[ 1. 1. nan 1. 1.]
[ 1. 1. 1. 1. 1.]]
希望有帮助!
附上jupyter笔记本屏幕快照以供参考: