Python et numpy. J'ai découvert comment découper une séquence en 1 dimension: arr[start:end]
, et accéder à un élément du 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 une autre dimension?
Si vous utilisez numpy
, c'est simple:
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 aussi.).
Ce que j'ai fait ici est que je prends chaque rangée désirée 1 à la fois (arr[i]
). Je coupe ensuite les colonnes que je veux de cette ligne et les ajoute à la liste que je construis.
Si vous essayez naïvement: arr[0:2]
, Vous obtenez les deux premières lignes et si vous redécoupez arr[0:2][0:2]
, Vous ne faites que trancher de nouveau les deux premières lignes.
* Cela fonctionne aussi pour les tableaux numpy, mais ce sera lent comparé à la solution "native" que j'ai postée ci-dessus.