2013-07-27 63 views

回答

2
import numpy as np 

Array1 = np.array([[1,2,3], [1,1,2]]) 
Array2 = np.array([[0,2,0], [3,1,3]]) 

b = np.where(Array1 == 1) 

Array1[b] = Array2[b] 

结果:

>>> Array1 
array([[0, 2, 3], 
     [3, 1, 2]]) 

正如jorgeca指出上述溶液中可以减少到:

b = Array1 == 1 
Array1[b] = Array2[b] 
+2

你可以放弃调用'np.where'(因为'数组1 == 1'返回boolean面膜这已经是一个指数)或者可能使用它的三个参数形成。 – jorgeca

+0

@jorgeca,这是一个很好的观点。谢谢。 – Akavall

2

这一个基于Akaval的解决方案,但在一行中。它利用等特点np.where()

import numpy as np 
Array1 = np.array([[1,2,3], [1,1,2]]) 
Array2 = np.array([[0,2,0], [3,1,3]]) 

Output = np.where(Array1 == 1, Array2, Array1) 
+0

不错,我不知道这个单线解决方案。我想不同的是,这会创建一个新的数组而不是修改Array1。 – Akavall

+0

@Akavall:直到你的回答发给我的文档,我才真正没有听说过'np.where()'。这实际上非常接近该页面上的一个示例。 – Dan