【问题标题】:spliting numpy array to fixed length将numpy数组拆分为固定长度
【发布时间】:2021-01-28 10:13:13
【问题描述】:

我有一个 1d-numpy 数组,我想将其拆分为多个固定长度的子数组(注意它len)。 当数组的长度不是 len 的乘积时,我希望它采用数组的最后一个 len 元素。 当使用 numpy 函数 array_split 我们得到:

x = np.arange(8.0)
print(np.array_split(x, 3))

输出是:

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

但我想要:

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

有谁知道这样做的内置函数?

谢谢!

【问题讨论】:

    标签: python-3.x numpy split numpy-ndarray


    【解决方案1】:

    我认为这可能是你最好的选择 -

    import numpy as np
    
    x = np.arange(8)
    c = 3
    split = np.array_split(x, c)[:-1] + [x[-int(round(len(x)/c)):]]
    print(split)
    

    给 -

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

    【讨论】:

      【解决方案2】:

      使用长度参数和列表推导:

      import numpy as np
      
      x = np.arange(8)
      lenght=3
      split=[x[i:i+lenght] for i in range(0,len(x),lenght)][:-1]+[x[-lenght:]]
      print(split)
      

      *(不要使用len关键字,它也是python内置的)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-15
        • 1970-01-01
        • 1970-01-01
        • 2012-06-29
        相关资源
        最近更新 更多