Python: découper un tableau multidimensionnel
Je suis nouveau en Python et numpy. J'ai compris comment découper 1 Séquence dimensionnelle: arr[start:end]
, et accéder à un élément dans le tableau: el = arr[row][col]
.
Essayer quelque chose comme slice = arr[0:2][0:2]
(Où arr
est un tableau numpy) ne me donne pas les 2 premières lignes et colonnes, mais répète les 2 premières lignes. Qu'est - ce que je viens de faire, et comment puis-je trancher le long d'une autre dimension?
1 réponses
Si vous utilisez numpy
, c'est facile:
slice = arr[:2,:2]
, Ou si vous voulez les 0,
slice = arr[0:2,0:2]
Vous obtiendrez le même résultat.
* notez que slice
est en fait le nom d'un type intégré. Généralement, je conseillerais de donner à votre objet un "nom" différent.
Une autre façon, si vous travaillez avec des listes de listes*:
slice = [arr[i][0:2] for i in range(0,2)]
(notez que les 0 ici sont inutiles: [arr[i][:2] for i in range(2)]
fonctionnerait également.).
Ce que j'ai fait ici, c'est que je prends chaque rangée désirée 1 à la fois (arr[i]
). Je découpe ensuite les colonnes que je veux de cette ligne et l'ajoute à la liste que je construis.
Si vous essayez naïvement: arr[0:2]
vous obtenez les 2 premières lignes qui si vous coupez à nouveau arr[0:2][0:2]
, vous découpez simplement les deux premières lignes à nouveau.
*cela fonctionne aussi pour les tableaux numpy, mais il sera lent par rapport à la solution" native " que j'ai posté ci-dessus.