2013-09-10 259 views
13

我會盡量清楚,我將首先解釋爲什麼我要將兩個數組轉換爲矩陣。將兩個列表轉換爲矩陣

要繪製一個投資組合的表現VS的市場指數我以這種形式需要的數據結構,如:

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

但我有數據作爲兩個獨立的1-d數組:

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

那麼如何將第二種情景轉換爲第一種情景。我試過np.insert將第二個數組添加到我在python shell中的測試矩陣中,我的問題是將第一個數組轉換爲單個列矩陣。

任何關於如何在沒有強制循環的情況下實現這一目標的幫助將非常有用。

回答

35

你想要的標準numpy的功能是np.column_stack

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

所以用你的portfolioindex個陣列,做

np.column_stack((portfolio, index)) 

會產生這樣的:

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

+1我不知道這個,比創建一個新的數組並使用'.T'好多了! – arshajii

1

假設的投資組合和指數的長度是一樣的:

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

或者一個班輪使用列表理解:

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

結果應該大概是'numpy.array'。 – arshajii

+0

@arshajii嗯我不太確定 – Joohwan