我有两个大数组,其元素完全相同。在Numpy数组中替换值,在第二个Numpy数组中赋值,给定条件
Array1=[[1,2,3][1,1,2]]
Array2=[[0,2,0][3,1,3]]
如果元素数组1 =“1”,将“1”无论是在同一个地方ARRAY2
Output=[[0,2,3][3,1,2]]
应该很容易,但是这晚在星期五有我的大脑炒。
我有两个大数组,其元素完全相同。在Numpy数组中替换值,在第二个Numpy数组中赋值,给定条件
Array1=[[1,2,3][1,1,2]]
Array2=[[0,2,0][3,1,3]]
如果元素数组1 =“1”,将“1”无论是在同一个地方ARRAY2
Output=[[0,2,3][3,1,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]
这一个基于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)
你可以放弃调用'np.where'(因为'数组1 == 1'返回boolean面膜这已经是一个指数)或者可能使用它的三个参数形成。 – jorgeca
@jorgeca,这是一个很好的观点。谢谢。 – Akavall