【发布时间】:2020-09-20 10:40:21
【问题描述】:
在 python 中,假设我有一个一维数组 C(c 维),并且我想构造一个维度为 a x b x c x d 的 4D 矩阵,使得该数组沿所有其他轴重复。 p>
即不管1、2、4维索引是什么,array[i][j][k][l] = C[k]
是否有任何 numpy 函数可以做到这一点?谢谢!
【问题讨论】:
标签: python-3.x numpy multidimensional-array
在 python 中,假设我有一个一维数组 C(c 维),并且我想构造一个维度为 a x b x c x d 的 4D 矩阵,使得该数组沿所有其他轴重复。 p>
即不管1、2、4维索引是什么,array[i][j][k][l] = C[k]
是否有任何 numpy 函数可以做到这一点?谢谢!
【问题讨论】:
标签: python-3.x numpy multidimensional-array
对于数组ar,您可以使用np.broadcast_to,将更高的暗淡数组作为视图(因此几乎为零运行时间且没有内存开销),就像这样 -
np.broadcast_to(ar[None,None,:,None],(a,b,len(ar),d))
示例运行 -
In [115]: ar = np.random.rand(10)
In [116]: a,b,d = 3,4,5
In [117]: np.broadcast_to(ar[None,None,:,None],(a,b,len(ar),d)).shape
Out[117]: (3, 4, 10, 5)
如果您需要输出有自己的内存空间,请附加.copy()。
前导新轴(无)是可选的。因此,或者 -
In [121]: np.broadcast_to(ar[:,None],(a,b,len(ar),d)).shape
Out[121]: (3, 4, 10, 5)
【讨论】: