Numpy将数组拆分为大小相等的块,并带有余数

5sxhfpxr  于 2023-08-05  发布在  其他
关注(0)|答案(3)|浏览(98)

有没有一个numpy函数可以将一个数组分割成***大小为m***的相等块(不包括任何大小小于m的余数)。我已经看过函数np.array_split,但它不允许您通过指定块的大小来拆分。
下面是我正在寻找的一个例子:

X = np.arange(10)
split (X, size = 3)
-> [ [0,1,2],[3,4,5],[6,7,8], [9] ]

split (X, size = 4)
-> [ [0,1,2,3],[4,5,6,7],[8,9]]

split (X, size = 5)
-> [ [0,1,2,3,4],[5,6,7,8,9]]

字符串

igetnqfo

igetnqfo1#

这里有一个np.split + np.arange/range-

def split_given_size(a, size):
    return np.split(a, np.arange(size,len(a),size))

字符串
样本运行-

In [140]: X
Out[140]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

In [141]: split_given_size(X,3)
Out[141]: [array([0, 1, 2]), array([3, 4, 5]), array([6, 7, 8]), array([9])]

In [143]: split_given_size(X,4)
Out[143]: [array([0, 1, 2, 3]), array([4, 5, 6, 7]), array([8, 9])]

In [144]: split_given_size(X,5)
Out[144]: [array([0, 1, 2, 3, 4]), array([5, 6, 7, 8, 9])]

yhqotfr8

yhqotfr82#

def build_chunks(arr, chunk_size, axis=1):
    return np.split(arr, 
                    range(chunk_size, arr.shape[axis], chunk_size),
                    axis=axis)

字符串

20jt8wwn

20jt8wwn3#

lst = np.arange(10)
n = 3
[lst[i:i + n] for i in range(0, len(lst), n)]

字符串

相关问题