Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
983 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  Matrice, extraire par index

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Matrice, extraire par index

n°2215265
giny28
Posté le 07-01-2014 à 19:47:35  profilanswer
 

Bonjour,
 
J'aimerais coder une fonction  colonne2() qui permet d'extraire de M tous les éléments d'index 2 ,et il faut généraliser ensuite une
fonction colonne() pour n'importe quelle colonne d'une matrice de n lignes par m colonnes".
 
L'objectif est de d'extraire les éléments d'index 2 ou indice 2  de chaque ligne ex : 3, 6 .... .
Mais la fonction col2() sera t-elle binaire ? Les 2 arguments : la matrice et l'indice.
Il faut utiliser 2 boucles for… enfin je pense  :(  
 
Déjà pour coder une matrice de n lignes par m colonnes : par ex : matrice(2,3) donne [[1, 2, 3], [4, 5, 6]].
 

Code :
  1. >>> def matrice(n,m) :
  2.     m = []
  3.     for e in range(n) :
  4.         z = []
  5.         for o in range(m) :
  6.             z += [3*e + o + 1]
  7.         m += [z]
  8.     return m


 
_ Aussi , je n'arrive pas à utiliser la méthode append()  :pfff: , append est sensé rajouter un élèment à la fin par exemple d'une liste :
 
je sais que je n'ai pas utiliser la méthode append() , mais j'ai découvert une chose intéressante :
 
     

Code :
  1. >>> m=[]
  2.      >>> m.append(range(3))
  3.      >>> m.append(range(3, 6)
  4.      >>> m.append(range(6, 9))
  5.      >>>m
  6.      [[0, 1, 2], [3, 4, 5], [6, 7, 8]]      # là , cela commence à 0 , mais dans mon cas çà doit commencer par 1 .


Merci d'avance  :jap:

Message cité 1 fois
Message édité par giny28 le 08-01-2014 à 17:43:58
mood
Publicité
Posté le 07-01-2014 à 19:47:35  profilanswer
 

n°2215270
suizokukan
Posté le 07-01-2014 à 20:57:18  profilanswer
 

Bon, je ne suis pas sûr de beaucoup t'aider mais ...
(1) numpy est une librairie dédiée au calcul, en particulier matriciel
(2) si tu dois faire tes matrices à la main et que les performances ne sont pas prioritaires, pourquoi ne pas utiliser le type dict ? Quelque chose comme d = { (0,0) : n00, (0,1) : n01, (1,0) : n10, ... }
 
Qu'en penses-tu ?


---------------
rule #1 : trust the python
n°2215286
giny28
Posté le 07-01-2014 à 22:16:12  profilanswer
 

Je connais pas ces méthodes , numpy ,j'en ai entendu parler , mais ce n'est pas de mon niveau . En tout cas , merci pour ton aide  :)

n°2215340
masklinn
í dag viðrar vel til loftárása
Posté le 08-01-2014 à 13:29:11  profilanswer
 

giny28 a écrit :

Bonjour,
 
J'aimerais coder une fonction  colonne2() qui permet d'extraire de M tous les éléments d'index 2 ,et il faut généraliser ensuite une
fonction colonne() pour n'importe quelle colonne d'une matrice de n lignes par m colonnes".
 
L'objectif est de d'extraire les éléments d'index 2 ou indice 2  de chaque ligne ex : 3, 6 .... .
Mais la fonction col2() sera t-elle binaire ? Les 2 arguments : la matrice et l'indice.


Bah non, t'as que la matrice puisque l'indice est fixé à 2. colonne() aura probablement 2 arguments oui, mais pas colonne2.

giny28 a écrit :

Il faut utiliser 2 boucles for… enfin je pense  :(


Je vois pas pourquoi, tu itères sur les lignes et t'as un index fixe, où serait la 2e itération?

giny28 a écrit :

_ Aussi , je n'arrive pas à utiliser la méthode append()  :pfff: , append est sensé rajouter un élèment à la fin par exemple d'une liste


Oui?

Code :
  1. >>> l = []
  2. >>> l.append(42)
  3. >>> l.append(3)
  4. >>> l
  5. [42, 3]


giny28 a écrit :

je sais que je n'ai pas utiliser la méthode append() pour le code px10-1 , mais j'ai découvert une chose intéressante :
 
     

Code :
  1. >>> m=[]
  2.      >>> m.append(range(3))
  3.      >>> m.append(range(3, 6)
  4.      >>> m.append(range(6, 9))
  5.      >>>m
  6.      [[0, 1, 2], [3, 4, 5], [6, 7, 8]]      # là , cela commence à 0 , mais dans mon cas çà doit commencer par 1 .


Merci d'avance  :jap:


J'ai pas compris, c'est quoi la chose intéressante? que par défaut range() commence à 0 et soit un intervalle semi-ouvert? C'est marqué dans la doc: http://docs.python.org/2/library/functions.html#range


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°2215396
masklinn
í dag viðrar vel til loftárása
Posté le 08-01-2014 à 19:02:24  profilanswer
 

Prière de répondre en public aux questions d'intérêt public, pas en privé :o

 
giny28 a écrit :

Bonjour,

  

>>> def colonne(matrice, index):

 

element=[]
for i in matrice:
element += i[index]
return element

 

Voilà le code que j'obtiens , mais il ne marche pas , je sais pas pourquoi , comme au début il faut faire une fonction matrice , on doit mettre la fonction matrice en argument passé .

 

Merci pour ton aide ^^


+= c'est l'opération extend, pas append (donc ça prend une liste en paramètre, et ça la concatène au sujet)

 

et le nommage est pas terrible, "i" généralement c'est un index (numérique, dans un tableau) pas une ligne de matrice.

 

Accessoirement, "il ne marche pas" ça aide pas trop comme description, il est généralement suggéré de fournir toute erreur s'affichant (s'il y en a) ainsi que les comportements attendus et observés.


Message édité par masklinn le 08-01-2014 à 19:03:19

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°2215400
giny28
Posté le 08-01-2014 à 19:09:20  profilanswer
 

Merci pour la précision  :jap:  Voilà le code que j'obtiens , je laisse pour l'instant 'i' mais c'est en effet une bonne remarque  :)  
 
>>> def colonne(matrice, index):
 elements=[]
 for i in matrice:
        elements += [i[index]]
 return elements
 
>>> colonne(2, 3)
 
Traceback (most recent call last):
  File "<pyshell#40>", line 1, in <module>
    col2(matrice, 2)
  File "<pyshell#39>", line 3, in col2
    for i in matrice:
TypeError: 'function' object is not iterable

n°2215411
masklinn
í dag viðrar vel til loftárása
Posté le 08-01-2014 à 20:04:00  profilanswer
 

giny28 a écrit :

Merci pour la précision  :jap:  Voilà le code que j'obtiens , je laisse pour l'instant 'i' mais c'est en effet une bonne remarque  :)

 

       elements += [i[index]]


Prière d'utiliser append là, c'est quoi cette horreur [:pingouino dei]

giny28 a écrit :


>>> colonne(2, 3)

 

Traceback (most recent call last):
  File "<pyshell#40>", line 1, in <module>
    col2(matrice, 2)
  File "<pyshell#39>", line 3, in col2
    for i in matrice:
TypeError: 'function' object is not iterable


Il y a une fonction matrice définie dans le premier post, je présume que c'est ce que tu as passé à colonne.

 

Accessoirement, colonne pourrait utiliser map (et, pourquoi pas, le rarement utilisé itemgetter), ou une listcomp.


Message édité par masklinn le 08-01-2014 à 20:04:32

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°2216974
giny28
Posté le 21-01-2014 à 20:07:12  profilanswer
 

Merci pour l'explication et les liens !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  Matrice, extraire par index

 

Sujets relatifs
extraire une feuille de plusieurs classeurs vers un autre classeurextraire des valeurs pour remplir tableau
comment remplir une matrice à partir d'un vecteurextraire d'une base vers excel
réceptionner un matrice de c++ et la mettre dans une matrice en javaRESOLU probleme avec index.html
Extraire les donnees d'un fichier mdfextraire un entier d'une chaîne de caractère ; string
initialisation d'une matrice en c++probleme index site web
Plus de sujets relatifs à : Matrice, extraire par index


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR