Python:用另一个numpy.ndarray和优雅的解决方案掩盖numpy.ndarray

时间:2012-10-05 16:42:52

标签: python arrays optimization numpy

我有两个numpy.ndarray,我找到了一个不太优雅的解决方案(使用超过4行代码)来使用data1屏蔽data2。我问一个优雅的解决方案,保存行:

例如

data1 = np.array([[1,2,np.nan,4,5],[np.nan,7,np.nan,9,np.nan],[11,12,13,14,np.nan],[np.nan,17,np.nan,19,20]])
data2 = np.ones((6, 4))

print data1
[[  1.   2.  nan   4.   5.]
 [ nan   7.  nan   9.  nan]
 [ 11.  12.  13.  14.  nan]
 [ nan  17.  nan  19.  20.]]
>>> print data2
[[ 1.  1.  1.  1.]
 [ 1.  1.  1.  1.]
 [ 1.  1.  1.  1.]
 [ 1.  1.  1.  1.]
 [ 1.  1.  1.  1.]
 [ 1.  1.  1.  1.]]

我希望得到的结果是:

[[  1.   2.  1   4.   5.]
 [ 1   7.  1   9.  1]
 [ 11.  12.  13.  14.  1]
 [ 1  17.  1  19.  20.]]

换句话说,data1是data2的值

提前感谢您的帮助和建议。我用超过4行代码做了这个

1 个答案:

答案 0 :(得分:2)

假设你的意思是将data1和data2作为相同大小的数组(这会改变你的例子来读取):

data2 = np.ones((4, 5))

一线方法是:

data1[np.isnan(data1)] = data2[np.isnan(data1)]