2013-09-10 202 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