【问题标题】:Building a 4D matrix from 1D array duplicated从复制的一维数组构建一个 4D 矩阵
【发布时间】: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


    【解决方案1】:

    对于数组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)
    

    【讨论】:

      猜你喜欢
      • 2016-10-13
      • 2019-07-10
      • 2021-01-09
      • 1970-01-01
      • 2017-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-22
      相关资源
      最近更新 更多