【问题标题】:Expand Multi-Dimensional Numpy Array展开多维 Numpy 数组
【发布时间】:2021-01-08 12:13:23
【问题描述】:

我有一个 [2x2x2] numpy 数组 a 并希望将其扩展为 [4x4x4],例如 b。前提是扩大价值观。它应该看起来像这样:

 a = array([[[1, 2],
             [-2, -1]],
            [[3, -4],
             [4, -3]]])

 b = array([[[1, 1, 2, 2],
             [1, 1, 2, 2],  
             [-2, -2, -1, -1],
             [-2, -2, -1, -1]],
            [[1, 1, 2, 2],
             [1, 1, 2, 2],  
             [-2, -2, -1, -1],
             [-2, -2, -1, -1]],
            [[3, 3, -4, -4],
             [3, 3, -4, -4],  
             [4, 4, -3, -3],
             [4, 4, -3, -3]],
            [[3, 3, -4, -4],
             [3, 3, -4, -4],  
             [4, 4, -3, -3],
             [4, 4, -3, -3]]])

简单地说,a 的每个值都扩展为具有相同值的 [2x2x2]。

我当前的尝试只是硬编码。

b = np.zeros(shape=(4, 4, 4), dtype='int')
b[0:2, 0:2, 0:2] = a[0, 0, 0]
b[0:2, 0:2, 2:] = a[0, 0, 1]
b[0:2, 2:, 2:] = a[0, 1, 1]
b[0:2, 2:, 0:2] = a[0, 1, 0]
b[2:, 0:2, 0:2] = a[1, 0, 0]
b[2:, 0:2, 2:] = a[1, 0, 1]
b[2:, 2:, 2:] = a[1, 1, 1]
b[2:, 2:, 0:2] = a[1, 1, 0]

这肯定更容易。谢谢。

【问题讨论】:

    标签: python-3.x numpy multidimensional-array


    【解决方案1】:
    b = np.insert(a, slice(0,2), a, 2)
    b = np.insert(b, slice(0,2), b, 1)
    b = np.insert(b, slice(0,2), b, 0)
    

    结果:

    array([[[ 1,  1,  2,  2],
            [ 1,  1,  2,  2],
            [-2, -2, -1, -1],
            [-2, -2, -1, -1]],
    
           [[ 1,  1,  2,  2],
            [ 1,  1,  2,  2],
            [-2, -2, -1, -1],
            [-2, -2, -1, -1]],
    
           [[ 3,  3, -4, -4],
            [ 3,  3, -4, -4],
            [ 4,  4, -3, -3],
            [ 4,  4, -3, -3]],
    
           [[ 3,  3, -4, -4],
            [ 3,  3, -4, -4],
            [ 4,  4, -3, -3],
            [ 4,  4, -3, -3]]])
    

    或者,如果可以覆盖a,只需:

    for axis in range(3):
        a = np.insert(a, slice(0,2), a, axis)
    

    【讨论】:

    • 干杯!更优雅!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 1970-01-01
    • 2015-03-15
    • 1970-01-01
    • 2022-07-12
    • 2011-11-16
    相关资源
    最近更新 更多