从复制的1D阵列构建4D矩阵



在python中,假设我有一个1D数组C(C维(,我想构建一个维度为a x b x C x d的4D矩阵,这样数组就沿着所有其他轴被复制。

即,无论维度1、2和4的索引是什么,array[I][j][k][l]=C[k+]

有什么numpy函数可以做到这一点吗?谢谢

对于数组ar,您可以使用np.broadcast_to来获得更高亮度的数组作为视图(因此几乎没有运行时间,也没有内存开销(,就像so-

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()

前导newaxes(无(是可选的。因此,或者

In [121]: np.broadcast_to(ar[:,None],(a,b,len(ar),d)).shape
Out[121]: (3, 4, 10, 5)

最新更新