python - 用另一个 numpy 数组的值逐行替换 numpy 数组

标签 python numpy numpy-ndarray

我有 0s 和 1s 存储在一个 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)并且对于另一行相同(第一个维度 - “行数” - 对于 将始终相同gx)

我似乎无法使用 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/

相关文章:

python - 当图像转换为 numpy 数组时如何调整图像大小

python - 尝试人脸识别时出现明显的过时警告和值错误

python - Google Roads API - HTTP 错误 403 : Forbidden

python - 如何将 uirevision 直接添加到 Plotly Dash 中的图形以进行自动更新

python - 如何将 MNIST 图像加载到 Pytorch DataLoader 中?

python - 从python中的numpy npz文件加载数组

python - Python中多个张量的高效缩减

python - 在 python 中将 2D 切片合并到 3D 体积

python - 为真实数据的分布生成随机数?

python - Numpy 数组到张量