python - 如何在由掩码指定的较大数组中的不同位置应用相同的一组值?
问题描述
我有一个 2DY
维度N x N
数组和一个K
二进制掩码数组X
,每个维度M x M
(所以,X
有 shape K x M x M
)。中的每个二进制掩码X
只有一个N x N
补丁,其余元素为零。我想创建一个K x M x M
数组Z
,其中的元素Y
位于 指定的位置X
,其他任何地方都为零。
例如,如果M = 3
, N = 2
, K = 3
, 和
X = [[[1., 1., 0.],
[1., 1., 0.],
[0., 0., 0.]],
[[0., 1., 1.],
[0., 1., 1.],
[0., 0., 0.]],
[[0., 0., 0.],
[0., 1., 1.],
[0., 1., 1.]]]
和
Y = [[0.1, 0.2],
[0.3, 0.4]]
那么Z
应该是
Z = [[[0.1, 0.2, 0.],
[0.3, 0.4, 0.],
[0., 0., 0.]],
[[0., 0.1, 0.2],
[0., 0.3, 0.4],
[0., 0., 0.]],
[[0., 0., 0.],
[0., 0.1, 0.2],
[0., 0.3, 0.4]]]
我想使用 Numpy 或 Pytorch 的函数来做到这一点。numpy.where()
我认为使用, 也许可以做到这一点
Z = numpy.zeros((3,3,3))
Z[numpy.where(X == 1)] = Y
但这会产生形状不匹配错误。
什么是最简洁和最有效的方法(除了显式使用循环来设置值)?
解决方案
尝试这个:
X[X == 1] = np.tile(Y.flatten(), X.shape[0])
推荐阅读
- javascript - 使用 JavaScript 在 html 中显示 python 结果 | 蟒鳗
- javascript - 角等待服务响应
- javascript - 在所有 ios 设备和 safari 浏览器中,在新选项卡中打开会重定向到基本 url,而不是重定向到预期的路由 (Angular)
- ansible - 使用 $ 的 Ansible 查找 env 并注入 jj2 模板不起作用
- node.js - Azure 函数临时存储 | 节点
- java - java中NIO的异常处理
- python - 如何在循环中将数据框导出为 CSV
- php - Codeigniter 3 - 遇到 PHP 错误并遇到未捕获的异常
- android - 如何观察广播接收器中的流?
- c++ - 有人可以一步一步地向我解释这段代码中发生的事情吗,c++