【发布时间】:2021-02-05 12:10:51
【问题描述】:
我有以下代码创建一个 4D grid 矩阵,我希望将滚动的 2D vals 矩阵插入到这个网格中。
import numpy as np
k = 100
x = 20
y = 10
z = 3
grid = np.zeros((y, k, x, z))
insert_map = np.random.randint(low=0, high=y, size=(5, k, x))
vals = np.random.random((5, k))
for i in range(x):
grid[insert_map[:, :, i], i, 0] = np.roll(vals, i)
如果 vals 是一维数组,我会使用一维 insert_map 数组作为参考,它会起作用,但是在多个维度上使用它似乎是一个问题,并且会引发错误:
ValueError: shape mismatch: value array of shape (5,100) could not be broadcast to indexing result of shape (5,100,3)
我很困惑为什么它说 grid[insert_map[:, :, i], i, 0] 的错误应该在我的脑海中为网格数组的 y 和 k 部分提供 (5, 100) 插入位置,然后修复 @ 987654330@ 和 z 部分与 i 和 0?
有没有办法通过二维索引将2D(5、100)滚动vals矩阵插入到4D(10、100、20、3)grid矩阵中?
【问题讨论】:
标签: python arrays numpy matrix