2015-09-16 36 views
1

我想根据另一个数组中的遮罩来替换2D numpy数组的值。这个想法是,在arr_a值等于0.4的位置,arr_b中的值应该设置为0.8。 arr_a和arr_b总是具有相同的大小。对于这个玩具的例子,你可以假设arr_a的值是0.4。但代码不起作用:遮罩的二维数组替换值操作在numpy中不起作用

import numpy 
arr_a = numpy.random.rand(20,40) 
arr_b = numpy.random.rand(20,40) 
arr_a[0,1] = 0.4 

mask_cntr = numpy.ma.masked_not_equal(arr_a[:], 0.4) 
ma_arr = numpy.ma.masked_where(mask_cntr, arr_b) 
ma_arr.filled(fill_value = 0.8) 

有人能告诉我如何解决这个问题吗?

+0

这是怎么回事,这是怎么回事?你为什么使用'np.ma'方法? – hpaulj

回答

1

您的数组定义是错误的,因为您可以在错误消息中阅读。

arr_a = numpy.random.random((20,40)) 
+0

谢谢,这是我粘贴在这里的一个错字,但代码确实创建了随机数组 – user308827

+1

arr_b [arr_a == 0.4] = 0.8应该可以工作 – Julien