Obtenir l'index de ligne pour un 2D tableau numPy lorsque plusieurs valeurs de la colonne sont connus

Supposons que j'ai un 2D tableau numPy tels que:

un = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]

Comment puis-je trouver l'index de la ligne pour laquelle je sais que plusieurs valeurs? Par exemple, si il est connu que les 0e colonne 2 et la 1ère colonne est de 5, je voudrais savoir l'index de ligne où cette condition est remplie (ligne 1 dans ce cas).

Dans mon application, les deux premières colonnes sont (x,y) les coordonnées, et la troisième colonne de l'information sur les coordonnées. Je suis en train d'essayer de trouver notamment des coordonnées dans la liste afin que je puisse modifier la valeur dans la troisième colonne.

EDIT: Pour préciser, ici, c'est un non-square exemple:

un = [ [1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12], [13, 14, 15, 16, 17, 18] ]

Supposons que je sais de la ligne, je suis à la recherche pour a 13 dans le 0e colonne, et 14 dans la 1ère colonne. J'aimerais revenir à l'index de la ligne. Dans ce cas, j'aimerais revenir à l'index 2 (2ème rangée).

Ou, mieux encore, je voudrais modifier la 4ème colonne de la ligne 13 dans le 0e colonne et 14 dans la 1ère colonne. Voici une solution que j'ai trouvée pour le cas que j'ai décrit (modification de la valeur à 999):

a[(a[:,0]==13) & a[:,1]==14),
3] = 999

donne:

un = [ [1, 2, 3, 4, 5, 6], [7, 8, 9,
10, 11, 12], [13, 14, 15, 999, 17, 18] ]

Je suis désolé si ce n'était pas clair. Quelqu'un pourrait-il le souligne dans mon post original (au-dessus de la modifier) comment cela pourrait être interprété différemment, parce que j'ai du mal à le voir.

Grâce.

EDIT 2: correction d'une erreur dans la première édition (en gras)

Je peux maintenant voir comment j'ai fait cette chose entière source de confusion pour tout le monde. La solution à mon problème est bien décrite dans la condition b) de manger est la solution. Merci.

Je suis buffled. Après votre travail d'édition, quel est votre résultat pour: sum(a[0]== 13)? Merci
Malheureusement, j'ai foiré lors de l'édition de mon post la première fois, que j'ai modifié. Je vous remercie pour votre patience.
content d'ici que vous avez été en mesure de résoudre votre problème. Si vous vous sentez que ma réponse a été précieux pour vous, vous pouvez envisager de upvote ;-). Merci
Je ne peux pas upvote jusqu'à ce que j'ai 15 réputation, mais je n'ai marquer mon accepté de répondre. Merci.
mais vous semblez être assez près de 15 déjà ;-). Merci

OriginalL'auteur lookitsmarc | 2011-02-06

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *