我有 0
s 和 1
s 存储在一个 3 维 numpy 数组中:
g = np.array([[[0, 1], [0, 1], [1, 0]], [[0, 0], [1, 0], [1, 1]]])
# array([
# [[0, 1], [0, 1], [1, 0]],
# [[0, 0], [1, 0], [1, 1]]])
我想使用逐行替换策略将这些值替换为另一个数组中的值。例如,将 g
的值替换为 x
:
x = np.array([[2, 3], [4, 5]])
array([[2, 3],
[4, 5]])
获得:
array([
[[2, 3], [2, 3], [3, 2]],
[[4, 4], [5, 4], [5, 5]]])
这里的想法是将 g
的第一行替换为 x
的第一个元素(0
变为 2
和 1
变为 3
)并且对于另一行相同(第一个维度 - “行数” - 对于 将始终相同g
和 x
)
我似乎无法使用 np.where
因为有一个 ValueError: 操作数不能与形状一起广播 (2,3,2) (2,2 ) (2,2)
.
最佳答案
IIUC,
np.stack([x[i, g[i]] for i in range(x.shape[0])])
输出:
array([[[2, 3],
[2, 3],
[3, 2]],
[[4, 4],
[5, 4],
[5, 5]]])
关于python - 用另一个 numpy 数组的值逐行替换 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62564669/