Recherche d'index dans list ou array

Recherche d'index dans list ou array - Python - Programmation

Marsh Posté le 02-04-2009 à 16:38:54    

Bonjour,
 
sous Python 2.5, je dois chercher l'index qui donne la position d'une liste dans une liste de listes (qu'on peut considérer comme une matrice).
Ex.: pour u=[1,1,10], sa position dans t=[[1,1,1],[1,1,2],[1,10,100]] est 1.
 
Comment résoudre ce problème avec la liste t ?
Connaissez-vous une solution avec t en tant qu'objet array de numpy :
>>> import numpy
>>> t=numpy.array([[1,1,1],[1,1,2],[1,10,100]])
>>> t
array([[1, 1, 1],
       [1, 1, 2],
       [1, 10, 100]])
 
Merci pour votre aide.

Message cité 1 fois
Message édité par gennosuke le 02-04-2009 à 17:13:24
Reply

Marsh Posté le 02-04-2009 à 16:38:54   

Reply

Marsh Posté le 02-04-2009 à 16:56:50    

Reply

Marsh Posté le 02-04-2009 à 17:10:37    

gennosuke a écrit :

Bonjour,
 
sous Python 2.5, je dois chercher l'index qui donne la position d'une liste dans une liste de listes (qu'on peut considérer comme une matrice).
Ex.: pour u=[1,1,10], sa position dans t=[[1,[B][U]1[/U][/B],1],[1,[B][U]1[/U][/B],2],[1,[B][U]10[/U][/B],100]] est 1.
Comment résoudre ce problème avec la liste t ?


Code :
  1. t=[]
  2. t.append(range(3))
  3. t.append(range(3, 6)
  4. t.append(range(6, 9))
  5. t
  6. [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
  7. u=[3, 4, 5]
  8. t.index(u)
  9. 1


 

gennosuke a écrit :

Connaissez-vous une solution avec t en tant qu'objet array de numpy :


Désolé ,je ne sais pas utiliser numpy


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 02-04-2009 à 17:18:10    

Ok, merci à vous 2.
Sve@r, je suis d'accord avec ta solution, mais u n'est pas une liste de t.
Dans ton ex., si u=[1,4,7], je dois trouver l'index 1, position commune aux trois listes de t.

Reply

Marsh Posté le 02-04-2009 à 18:30:53    

Taz, dans le FM, penses-tu à where ou argwhere?
Comment utiliser ces fonctions dans le cas d'une liste u de valeurs et non une seule ?

Reply

Marsh Posté le 04-04-2009 à 09:09:57    

gennosuke a écrit :

Ok, merci à vous 2.
Sve@r, je suis d'accord avec ta solution, mais u n'est pas une liste de t.
Dans ton ex., si u=[1,4,7], je dois trouver l'index 1, position commune aux trois listes de t.


Ok, j'avais pas bien compris (mais ton exemple initial contenait des tas de "B" qui le rendaient illisible). Tu cherches en fait la position d'une colonne dans ta matrice.
Cependant tu remarques que la méthode index() te renvoie la position d'une ligne. Donc pourquoi ne pas faire une fonction qui
1) fait pivoter ta matrice pour que les lignes deviennent des colonnes et inversement
2) renvoie index(t) qui sera de fait l'index de ta colonne vu que la colonne est devenue la ligne
???
Par exemple cette fonction te renvoie une matrice renversée

Code :
  1. def f(mat):
  2.    new=[]
  3.    for i in range(len(mat[0])):
  4.        new.append([lig[i] for lig in mat])
  5.    return new


Message édité par Sve@r le 04-04-2009 à 09:23:49

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed