【问题标题】:Ravel() 3D array in a peculiar order - PythonRavel()以特殊顺序排列的 3D 数组 - Python
【发布时间】:2015-10-30 01:03:03
【问题描述】:

假设我有以下数组:

array([[[ 0,  1,  2],
        [ 3,  4,  5],
        [ 6,  7,  8]],

       [[ 9, 10, 11],
        [12, 13, 14],
        [15, 16, 17]],

       [[18, 19, 20],
        [21, 22, 23],
        [24, 25, 26]]])

我在上面使用标准的ravel()。这就是我得到的:

array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19, 20, 21, 22, 23, 24, 25, 26])

相反,我需要以不同的顺序解开,即:

0 9 18 1 10 19 2 11 20 3 12 21 4 13 22 5 14 23 6 15 24 7 16 25 8 17 26

不幸的是,即使是 ravel 中的order 参数也无济于事,产生:

a.ravel(order='F')

array([ 0,  9, 18,  3, 12, 21,  6, 15, 24,  1, 10, 19,  4, 13, 22,  7, 16,
       25,  2, 11, 20,  5, 14, 23,  8, 17, 26])

这是 Fortran 顺序,这是我发现的最接近我需要的东西,但仍然不是我想要的。 有人知道如何按我需要的顺序获取值吗?

【问题讨论】:

    标签: python numpy multidimensional-array flatten


    【解决方案1】:
    >>> a.transpose(1, 2, 0).ravel()
    array([ 0,  9, 18,  1, 10, 19,  2, 11, 20,  3, 12, 21,  4, 13, 22,  5, 14,
           23,  6, 15, 24,  7, 16, 25,  8, 17, 26])
    

    【讨论】:

      猜你喜欢
      • 2014-11-20
      • 1970-01-01
      • 2014-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-09
      相关资源
      最近更新 更多