Numpy divide l'array in blocchi di uguale dimensione con il resto
Sep 28 2020
Esiste una funzione numpy che divide un array in parti uguali di dimensione m (escluso qualsiasi resto che avrebbe una dimensione inferiore a m). Ho esaminato la funzione np.array_split ma questo non ti consente di dividere specificando le dimensioni dei blocchi.
Un esempio di quello che sto cercando è di seguito:
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]]
Risposte
4 Divakar Sep 28 2020 at 10:17
Ecco un modo con np.split+ np.arange/range-
def split_given_size(a, size):
return np.split(a, np.arange(size,len(a),size))
Esecuzioni di esempio -
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])]
AlexandraDudkina Sep 28 2020 at 10:19
lst = np.arange(10)
n = 3
[lst[i:i + n] for i in range(0, len(lst), n)]