2013-09-10 25 views
13

Postaram się być tak klarowny, jak to możliwe, i zacznę od wyjaśnienia, dlaczego chcę przekształcić dwie macierze w macierz.Konwertowanie dwóch list do macierzy

Aby wykreślić charakterystyki portfela vs indeks rynku Potrzebuję struktury danych, jak w tym formacie:

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

ale mam dane w postaci dwóch oddzielnych tablicach 1-D:

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

Jak więc przekształcić drugi scenariusz w pierwszy. Próbowałem już np.insert, aby dodać drugą tablicę do macierzy testowej, którą miałem w powłoce Pythona, moim problemem było przetransponowanie pierwszej macierzy do macierzy pojedynczej kolumny.

Każda pomoc w tym, jak to osiągnąć bez koniecznej pętli, byłaby świetna.

Odpowiedz

35

Standardowa funkcja numpy za to, co chcesz, jest np.column_stack:

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

Z Twoimi portfolio i index tablice, robiąc

np.column_stack((portfolio, index)) 

przyniesie coś takiego:

[[portfolio_value1, index_value1], 
[portfolio_value2, index_value2], 
[portfolio_value3, index_value3], 
...] 
+0

+1 Nie wiedziałem o tym, znacznie lepiej niż tworzenie nowej tablicy i używanie '.T'! – arshajii

1

Zakładając długości portfela i indeksu są takie same:

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

Albo jedno-liner użyciu listowego:

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

wynik powinien być przypuszczalnie 'numpy.array'. – arshajii

+0

@arshajii hmm Nie jestem zbyt pewny co do tego – Joohwan