web-dev-qa-db-fra.com

Conversion de deux listes en matrice

Je vais essayer d'être aussi clair que possible et je commencerai par expliquer pourquoi je veux transformer deux tableaux en une matrice.

Pour tracer la performance d'un portefeuille par rapport à un indice de marché, j'ai besoin d'une structure de données comme dans ce format:

[[portfolio_value1, index_value1]
 [portfolio_value2, index_value2]]

Mais j'ai les données sous forme de deux tableaux 1-D distincts:

portfolio = [portfolio_value1, portfolio_value2, ...]
index = [index_value1, index_value2, ...]

Alors, comment puis-je transformer le deuxième scénario en premier. J'ai essayé np.insert pour ajouter le deuxième tableau à une matrice de test que j'avais dans un python Shell, mon problème était de transposer le premier tableau dans une matrice à colonne unique.

Toute aide sur la façon d'y parvenir sans boucle impérative serait formidable.

28
bitoiu

La fonction numpy standard pour ce que vous voulez est np.column_stack:

>>> np.column_stack(([1, 2, 3], [4, 5, 6]))
array([[1, 4],
       [2, 5],
       [3, 6]])

Donc, avec vos tableaux portfolio et index, faire

np.column_stack((portfolio, index))

donnerait quelque chose comme:

[[portfolio_value1, index_value1],
 [portfolio_value2, index_value2],
 [portfolio_value3, index_value3],
 ...]
66
Jaime

Vous pouvez utiliser np.c_

np.c_[[1,2,3], [4,5,6]]

Cela vous donnera:

np.array([[1,4], [2,5], [3,6]])
2
JY.Yang

En supposant que les longueurs du portefeuille et de l'indice sont les mêmes:

matrix = []
for i in range(len(portfolio)):
    matrix.append([portfolio[i], index[i]])

Ou un one-liner utilisant la compréhension de liste:

matrix2 = [[portfolio[i], index[i]] for i in range(len(portfolio))]
1
Joohwan