【问题标题】:How do I divide a Numpy array along axis-0 into a list of equal sized numpy arrays?如何将 Numpy 数组沿轴 0 划分为大小相等的 numpy 数组列表?
【发布时间】:2021-03-11 22:03:31
【问题描述】:

例如数组

x = np.array([1, 2, 3, 4, 5, 6])

沿轴 0 分为 4 个“折叠”就像一个列表

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

显然,要实现这一点,必须删除一些数据。在这种情况下,第 5 和第 6 个元素是。即使它们不容易被必要的子数组数量整除并且必须删除数据,如何将任何数组拆分为大小相等的子数组?

【问题讨论】:

    标签: python arrays numpy


    【解决方案1】:

    正如您所说,在分区之前修剪数组很简单:

    n = 4
    x[:len(x)//n*n].reshape(n,-1)
    

    输出:

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

    【讨论】:

    • 你好,Quang 谢谢你的回答。我还有一个问题。我需要结果是 [array([1, 2, 3, 4, 5, 6])],但是使用你的方法是 [array([[1, 2, 3, 4, 5, 6]]) ]。如何获得形状为 [6, ] 而不是 [1, 6] 的结果。
    • @NicholasFowlkes。你想要 6, 1
    【解决方案2】:

    使用np.split 和模提前仔细修剪您的数组:

    N = 4
    x = np.arange(6)
    trim = len(x) % N or None
    result = np.split(x[:trim], N)
    

    如果len(x) 不是N 的倍数,trim 将是正确的数量。如果是,则模数为零,or None 将处理后续切片。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-19
      • 2011-06-29
      • 1970-01-01
      • 2015-07-13
      • 2011-01-22
      相关资源
      最近更新 更多