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?

30
demandé sur Subhrajyoti Dasgupta 2013-06-24 17:47:23

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.

43
répondu mgilson 2013-06-24 13:53:28