【发布时间】: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 个元素是。即使它们不容易被必要的子数组数量整除并且必须删除数据,如何将任何数组拆分为大小相等的子数组?
【问题讨论】:
例如数组
x = np.array([1, 2, 3, 4, 5, 6])
沿轴 0 分为 4 个“折叠”就像一个列表
[array([1]), array([2]), array([3]), array([4])]
显然,要实现这一点,必须删除一些数据。在这种情况下,第 5 和第 6 个元素是。即使它们不容易被必要的子数组数量整除并且必须删除数据,如何将任何数组拆分为大小相等的子数组?
【问题讨论】:
正如您所说,在分区之前修剪数组很简单:
n = 4
x[:len(x)//n*n].reshape(n,-1)
输出:
array([[1],
[2],
[3],
[4]])
【讨论】:
使用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 将处理后续切片。
【讨论】: