Je suis nouveau sur Python et je voudrais comprendre comment on va manipuler les éléments d’un tableau . Si j’ai par exemple:
a= ( a11 a12 a13 ) and b = (b11 b12 b13)
a21 a22 a23 b21 b22 b23
Je les ai définis en python comme par exemple:
a=[[1,1],[2,1],[3,1]]
b=[[1,2],[2,2],[3,2]]
J'ai vu que je ne pouvais pas faire référence à a[1][1]
mais à a[1]
qui me donne un résultat de [2,1]
. Alors, je ne comprends pas comment accéder à la deuxième ligne de ces tableaux? Ce serait a21, a22, a23, b21, b22, b23
? Et comment le ferais-je pour le multiplier par c1 = a21*b21, c2 = a22*b22
, etc.?
Si tu as
a=[[1,1],[2,1],[3,1]]
b=[[1,2],[2,2],[3,2]]
Ensuite
a[1][1]
Cela fonctionnera bien. Il pointe vers la deuxième colonne, deuxième rangée, comme vous le souhaitiez.
Je ne suis pas sûr de ce que tu as fait de mal.
Pour multiplier les cellules de la troisième colonne, vous pouvez simplement faire
c = [a[2][i] * b[2][i] for i in range(len(a[2]))]
Ce qui fonctionnera pour un nombre quelconque de lignes.
Edit: Le premier numéro correspond à la colonne, le second à la ligne avec votre mise en page actuelle. Ils sont tous deux numérotés de zéro . Si vous voulez changer l'ordre, vous pouvez le faire
a = Zip(*a)
ou vous pouvez le créer de cette façon:
a=[[1, 2, 3], [1, 1, 1]]
Si vous souhaitez effectuer plusieurs calculs avec un tableau 2d, vous devez utiliser le tableau NumPy au lieu de la liste d'imbrication.
pour votre question, vous pouvez utiliser: Zip (* a) pour le transposer:
In [55]: a=[[1,1],[2,1],[3,1]]
In [56]: Zip(*a)
Out[56]: [(1, 2, 3), (1, 1, 1)]
In [57]: Zip(*a)[0]
Out[57]: (1, 2, 3)
Examinez attentivement le nombre de crochets dans votre tableau. J'ai rencontré un exemple lorsque la fonction retournait la réponse avec un crochet supplémentaire, comme celui-ci:
>>>approx
array([[[1192, 391]],
[[1191, 409]],
[[1209, 438]],
[[1191, 409]]])
Et ça n'a pas marché
>>> approx[1,1]
IndexError: index 1 is out of bounds for axis 1 with size 1
Cela pourrait ouvrir les crochets:
>>> approx[:,0]
array([[1192, 391],
[1191, 409],
[1209, 438],
[1191, 409]])
Il est maintenant possible d'utiliser une notation d'accès d'élément ordinaire:
>>> approx[:,0][1,1]
409
Semble travailler ici:
>>> a=[[1,1],[2,1],[3,1]]
>>> a
[[1, 1], [2, 1], [3, 1]]
>>> a[1]
[2, 1]
>>> a[1][0]
2
>>> a[1][1]
1
a[1][1]
fonctionne comme prévu. Voulez-vous dire a11 en tant que premier élément de la première ligne? Parce que ce serait un [0] [0].