【发布时间】:2015-08-06 18:00:04
【问题描述】:
在 Numpy 中,我有两个表示图像的三维数组。我正在尝试在第一个图像上创建第二个图像的叠加层,因此我想用第二个数组中的相应元素替换第一个数组中的所有元素,但前提是它们不为零。有什么简单的方法吗?
【问题讨论】:
标签: python arrays numpy matrix
在 Numpy 中,我有两个表示图像的三维数组。我正在尝试在第一个图像上创建第二个图像的叠加层,因此我想用第二个数组中的相应元素替换第一个数组中的所有元素,但前提是它们不为零。有什么简单的方法吗?
【问题讨论】:
标签: python arrays numpy matrix
这似乎是 np.where 的完美用例 ...
new_arr = np.where(second == 0, first, second)
我已经完成了异地替换(创建一个新数组而不是修改原始数组),但这通常没关系...
【讨论】:
你可以这样做:
zeros_idx = array2 != 0
array1[zeros_idx] = array2[zeros_idx]
【讨论】:
使用numpy.nonzero 修改原始文件。类似于@Holt 提供的答案。
m = numpy.nonzero(array2)
array1[m] = array2[m]
【讨论】: