2013-09-10 21 views
13

Mümkün olduğunca açık olmaya çalışacağım ve neden iki diziyi bir matrise dönüştürmek istediğimi açıklayarak başlayacağım. İki listeyi bir matrise dönüştürmek

bu formatta böyle bir veri yapısını gereken bir pazar endeksi vs bir portföyün performansını çizmek için:

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

Ama iki ayrı 1-D diziler olarak veri var:

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

İkinci senaryoyu nasıl ilk haline dönüştürüyorum. İkinci diziyi bir python kabuğunda bulunan bir test matrisine eklemek için np.insert'u denedim, problemim ilk diziyi tek bir sütun matrisine dönüştürmekti.

Zorunlu bir döngü olmadan bunu nasıl gerçekleştireceğinize dair herhangi bir yardım harika olurdu. portföy ve dizinin

cevap

35

istediğini için standart numpy fonksiyonu np.column_stack geçerli:

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

portfolio veile Böyle bir şey doğuracak

np.column_stack((portfolio, index)) 

yapıyordiziler,:

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

+1 Bunu bilmiyordum, yeni bir dizi oluşturmaktan çok daha iyi ve '' T' kullanıyorum! – arshajii

1

varsayarsak uzunlukları aynıdır:

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

Ya tek astar kullanılarak liste anlama:

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

sonuç muhtemelen bir 'numpy.array' olmalıdır. – arshajii

+0

@arshajii hmm Bu konuda çok emin değilim – Joohwan

İlgili konular