您可以使用
b=numpy.copy(a)然后是b[numpy.isnan(b)]=1
In [45]: a[:] = numpy.NaN
In [46]: b=numpy.copy(a)
In [47]: b[numpy.isnan(b)]=1
In [48]: a
Out[48]:
array([[ nan, nan, nan],
[ nan, nan, nan],
[ nan, nan, nan]])
In [49]: b
Out[49]:
array([[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]])使用b =a[:]将不适用于您的示例,如果更改任一数组,值将更改。
In [102]: import numpy
In [103]: a = numpy.empty((3,3,))
In [104]: a[:] = numpy.NaN
In [105]: a
Out[105]:
array([[ nan, nan, nan],
[ nan, nan, nan],
[ nan, nan, nan]])
In [106]: b=a[:]
In [107]: b
Out[107]:
array([[ nan, nan, nan],
[ nan, nan, nan],
[ nan, nan, nan]])
In [108]: b[numpy.isnan(b)]=1
In [109]: a
Out[109]:
array([[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]])
In [110]: b
Out[110]:
array([[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]])
In [111]: a[:] = numpy.NaN
In [112]: a
Out[112]:
array([[ nan, nan, nan],
[ nan, nan, nan],
[ nan, nan, nan]])
In [113]: b
Out[113]:
array([[ nan, nan, nan],
[ nan, nan, nan],
[ nan, nan, nan]])