python - 用另一个 numpy 数组的值逐行替换 numpy 数组
问题描述
我将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
by的值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
become2
和1
become ) 的第一个元素,并且另一行相同(第一维 - “行数” - 对于and3
将始终相同)g
x
我似乎无法使用np.where
,因为有一个ValueError: operands could not be broadcast together with shapes (2,3,2) (2,2) (2,2)
.
解决方案
国际大学联合会,
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]]])
推荐阅读
- mesh - cavity.OpenFOAM 文件为空,怎么办?
- python-3.x - BigQuery BQ.insert_rows_json 和 BQ.load_from_json 的区别?
- python - 如何在 Python 中将一个数组的多行和多列分配给另一个数组的相同行和列?
- python - django-filters:icontains 类型的查找表达式无法正常工作
- excel - 当范围输入发生变化时,将输出值复制到另一个工作表
- python - TypeError:“张量”类型的参数不可迭代
- javascript - 条纹支付意图 api | 条纹仪表板上的付款不完整
- java - 通用 CompletableFuture 和 complete
- javascript - JavaScript 图像压缩递归
- javascript - 如何减少使用热敏打印机打印收据的顶部和底部空间?