我有三个numpy数组,一个是源数组,一个是目标数组,一个是掩码数组。我只想在掩码等于1的地方用源中相同的值替换目标中的值。你知道吗
我的初衷是:
import numpy as np
destination = np.arange(9).reshape((3,3))
source = np.ones((3,3))
mask = np.zeros((3,3)).astype(np.uint8)
mask[1,1]=1
destination[mask] = source[mask]
这让我觉得destination
是
[[1, 1, 1],
[1, 1, 1],
[6, 7, 8]]
但我希望是这样
[[0, 1, 2],
[3, 1, 5],
[6, 7, 8]].
当我得到正确的结果时
destination[mask==1] = source[mask==1].
我的问题是:为什么这两个命令不相同,或者第一个命令做什么?你知道吗
首先,你必须检查矩阵的内部,以及哪个矩阵给了你想要的。你知道吗
输出
但是
destination[mask == 1]
给你一个布尔矩阵输出
鉴于:
输出
但是使用
destination[mask == 1]
会得到一个值,即4。对于source[mask == 1]
也是一样的,它给出了一个值1。你知道吗如果使用
destination[mask==1] = source[mask==1]
而不是destination[mask] = source[mask]
,则只会更改目标矩阵中的值4。你知道吗我希望我的解释清楚。你知道吗
编辑:
我希望我能正确理解你的问题:
简单的整数索引结构
x[[i]]
给出了矩阵的第i行。你知道吗所以
destination[0,1,2]
给出:作为一个可以理解的例子,输入
destination[1,2,0]
导致相关问题 更多 >
编程相关推荐