2017-07-31 7 views
-3

J'ai une matrice de distributions en régime permanent et c'est ainsi que les résultats sortent.tableaux entre parenthèses doubles dans un tableau

[[ 0.43397114, 0.00939583, 0.55663303] 
[ 0.43397114, 0.00939583, 0.55663303] 
[ 0.43397114, 0.00939583, 0.55663303]] 

Je veux en sélectionner un comme P[0] par exemple. Mais il vient comme

[[ 0.43397114, 0.00939583, 0.55663303]] 

Quelqu'un peut-il me dire comment je peux choisir et convertir un d'entre eux comme ils sont les mêmes de manière à pouvoir comploté contre disons X = np.linspace(100,100,3)

+5

Votre code collé d'origine est syntaxiquement incorrect. Veuillez le corriger en premier. Astuce: Il faut au moins 8 virgules, peut-être plus, – DyZ

+0

Qu'est-ce que vous voulez voir? – Batman

+0

Je veux juste choisir un de la distribution et tracer contre X. fondamentalement le problème de doubles parenthèses cause un problème. –

Répondre

0

On dirait que vous essayez pour utiliser une liste 2D ou imbriquée.

Vous pouvez créer avec les éléments suivants:

p = [[ 0.43397114, 0.00939583, 0.55663303], 
    [ 0.43397114, 0.00939583, 0.55663303], 
    [ 0.43397114, 0.00939583, 0.55663303]] 

p [0] auront accès à la première matrice qui est [0,43397114, 0,00939583, 0,55663303]

p [0] [0] accès le premier élément du premier tableau qui est 0.43397114

+0

Je pensais qu'il pourrait y avoir une seule ligne pour le faire. Donc, je devrais accéder à chaque élément, puis créer une nouvelle liste? –

+0

Il n'est pas nécessaire de créer une nouvelle liste.Comprenez simplement que le premier objet renvoyé lorsque vous faites 'p [0]' est déjà une liste. Ensuite, accédez à l'élément que vous souhaitez comme vous le feriez normalement pour une liste. – Batman

+0

Ce que vous avez écrit dans votre question initiale n'a pas beaucoup de sens pour moi. Pourriez-vous, s'il vous plaît, le reformuler sans utiliser de pronom avec une seule direction par phrase pour que je sache exactement ce que vous essayez de faire? @Eric Enkele – Simon

0

Votre "matrice" est vraiment juste une liste de listes. Donc, quand vous dites p[0] ce que vous faites, c'est accéder au premier membre de la liste. Lequel, dans ce cas est la liste. Si vous vouliez obtenir le premier élément, par exemple, de cette liste, vous pouvez faire p[0][0]. Ou p[0][1]. Ou p[2][2], etc.

De plus, vous pouvez utiliser un numpy.matrix pour ce faire.

import numpy as np 

p = np.matrix("1, 2, 3; 4, 5, 6; 7, 8, 9") 
foo = p.item(0) 
1

Ok je vais simplement supposer que peut-être ce que vous voulez est de faire list de list of lists.

In [1]: import numpy as np 

In [2]: P = [[ 0.43397114, 0.00939583, 0.55663303], 
    ...: [ 0.43397114, 0.00939583, 0.55663303], 
    ...: [ 0.43397114, 0.00939583, 0.55663303]] 

In [3]: P = np.array(P) 

In [4]: P = P.flatten() 

In [5]: P 
Out[5]: 
array([ 0.43397114, 0.00939583, 0.55663303, 0.43397114, 0.00939583, 
     0.55663303, 0.43397114, 0.00939583, 0.55663303]) 

Maintenant, vous pouvez les tracer facilement. J'espère que c'est ce que vous vouliez dire.

1

je me attends à ce genre de comportement si vous avez créé un np.matrix:

In [37]: mat=np.matrix([[ 0.43397114, 0.00939583, 0.55663303] 
    ...: ,[ 0.43397114, 0.00939583, 0.55663303] 
    ...: ,[ 0.43397114, 0.00939583, 0.55663303]]) 
    ...: 
In [38]: mat 
Out[38]: 
matrix([[ 0.43397114, 0.00939583, 0.55663303], 
     [ 0.43397114, 0.00939583, 0.55663303], 
     [ 0.43397114, 0.00939583, 0.55663303]]) 
In [39]: mat[0] 
Out[39]: matrix([[ 0.43397114, 0.00939583, 0.55663303]]) 

Cette sous-classe de tableau 2d conserve dimensionnalité lorsque indexé.

Si elle avait été un tableau, la ligne indexée serait 1d

In [42]: mat.A[0] 
Out[42]: array([ 0.43397114, 0.00939583, 0.55663303]) 

Mais je suis perplexe quant à la façon dont vous avez cet affichage particulier. Il n'y a pas de matrix(. Il y a des virgules dans les listes internes, mais pas entre les externes. Si réel, le pourrait signifier que vous avez un tableau de listes, pas un 2d. Mais alors je ne m'attendrais pas à ce comportement d'indexation.