我有两个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行代码做了这个
答案 0 :(得分:2)
假设你的意思是将data1和data2作为相同大小的数组(这会改变你的例子来读取):
data2 = np.ones((4, 5))
一线方法是:
data1[np.isnan(data1)] = data2[np.isnan(data1)]