découpage dans les tableaux numpy/scipy
J'ai un tableau comme:
a = array([[1,2,3],[3,4,5],[4,5,6]])
quel est le moyen le plus efficace pour couper une 1x2 tableau de ce qui a seulement les deux premières colonnes de la "une"?
I. e.,
array([[2,3],[4,5],[5,6]]) in this case.
grâce.
Comment est l'exemple le résultat de votre Q "1x2"...? Et comment a-t-elle la premier deux colonnes? Je dois confondre...
voir les résultats que j'attends qu'il voulait dire les deux dernières colonnes 🙂 Et 1x2... bien. Il y a 3 tableaux de 2 éléments, vous pourriez le voir comme ça 😉 Vous êtes tout à fait le droit, +1
ouais je pense que c'était une faute de frappe. il fixe
voir les résultats que j'attends qu'il voulait dire les deux dernières colonnes 🙂 Et 1x2... bien. Il y a 3 tableaux de 2 éléments, vous pourriez le voir comme ça 😉 Vous êtes tout à fait le droit, +1
ouais je pense que c'était une faute de frappe. il fixe
OriginalL'auteur user248237dfsf | 2010-04-27
Vous devez vous connecter pour publier un commentaire.
Deux dimensions numpy les tableaux sont indexés à l'aide de
a[i,j]
(pasa[i][j]
), mais vous pouvez utiliser le même découpage de la notation avec numpy les tableaux et les matrices que vous pouvez avec des matrices en python (il suffit de les placer dans un seul[]
):Non, vous pouvez l'utiliser pour des dimensions supérieures.
OriginalL'auteur Michael Aaron Safyan
Est-ce que vous cherchez?
OriginalL'auteur Wolph
Ou en d'autres termes (pour citer la documentation)
La base de la tranche de la syntaxe est:i: j:k où i est l'indice de départ, j est l'arrêt de l'index, et k est l'étape (k>0)
Maintenant, si " je " n'est pas donnée, la valeur par défaut est 0 pour k > 0 et n - 1 pour k < 0 . Si j n'est pas donné, la valeur par défaut est n.
C'est un tableau unidimensionnel.
Maintenant deux dimensions des tableaux sont d'une toute autre bête. Le découpage de la syntaxe est un[rowrange,columnrange]
Donc, si vous voulez toutes les lignes, mais seulement les deux dernières colonnes, comme dans votre cas, vous ne
[0:3,1:3].
Ici [0:3] signifie que toutes les lignes de 0 à 3. et [1:3] signifie que toutes les colonnes à partir de la colonne 1 à la colonne 3.
Maintenant, comme vous pouvez vous demander, même si vous avez seulement 3 colonnes et la numérotation commence à 1, donc techniquement, cette commande doit retourner 3 colonnes de droite. j'.e colonne 1, colonne2, colonne 3. C'est la partie la plus délicate de cette syntaxe. Vous avez pour commencer à compter à partir APRÈS le premier numéro. Donc quand vous dites [1:3], vous êtes en fait en disant: donnez-moi la colonne 2 et de la colonne 3. Qui sont les deux dernières colonnes que vous souhaitez.
Maintenant, si vous ne savez pas combien de temps votre matrice est ou si vous voulez toutes les lignes, vous pouvez simplement laisser que la partie vide.
j'.e
a[:,1:3].
En va de même pour les colonnes aussi. j'.e si vous voulais dire, toutes les colonnes, mais juste la première ligne, vous devez écrire
a[0:1,:]
Maintenant, comment la réponse ci-dessus [:,1:] parce que quand vous dites [1:] pour les colonnes, cela signifie que de me donner quelque chose APRÈS la première colonne, et jusqu'à la fin de toutes les colonnes. j'.e vide signifie "jusqu'au bout".
Que vous devez vous rendre compte que quoi que ce soit sur chaque côté de la virgule n'est qu'un sous-ensemble de la unidimensionnel cas j'ai mentionné ci-dessus. j'.e si vous souhaitez spécifier vos lignes à l'aide de l'étape tailles que vous pouvez écrire
[::2,1]
Qui, dans votre cas, sera de retour
array([[2, 3],
[5, 6]])
je.e la commande met en lumière que: donnez-moi toutes les lignes, prendre 2 à la fois. En Plus de me donner seulement les 2 dernières colonnes.
Ce qui m'a pris un certain temps à comprendre. Afin de le coller ici, juste au cas où il aide quelqu'un.
OriginalL'auteur mithunpaul