numpy按类型元素搜索并更改它

时间:2018-07-07 12:32:36

标签: python arrays numpy

我有一个二维数组a和一个二维数组b。我需要计算c =a/b, 因此有一些infNaN对象。如何使用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)

1 个答案:

答案 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笔记本屏幕快照以供参考:

enter image description here