Python 将两个列表转换为矩阵

Python 将两个列表转换为矩阵,python,arrays,numpy,matrix,Python,Arrays,Numpy,Matrix,我将尽可能清楚地解释,首先我将解释为什么要将两个数组转换为一个矩阵 要绘制投资组合与市场指数的表现,我需要如下格式的数据结构: [[portfolio_value1, index_value1] [portfolio_value2, index_value2]] 但我将数据作为两个独立的一维阵列: portfolio = [portfolio_value1, portfolio_value2, ...] index = [index_value1, index_value2, ...] 那

我将尽可能清楚地解释,首先我将解释为什么要将两个数组转换为一个矩阵

要绘制投资组合与市场指数的表现,我需要如下格式的数据结构:

[[portfolio_value1, index_value1]
 [portfolio_value2, index_value2]]
但我将数据作为两个独立的一维阵列:

portfolio = [portfolio_value1, portfolio_value2, ...]
index = [index_value1, index_value2, ...]
那么我如何将第二个场景转换为第一个场景呢。我尝试了
np.insert
将第二个数组添加到python shell中的测试矩阵中,我的问题是将第一个数组转换为单列矩阵


关于如何在没有强制循环的情况下实现这一点的任何帮助都将非常有用。

假设投资组合和指数的长度相同:

matrix = []
for i in range(len(portfolio)):
    matrix.append([portfolio[i], index[i]])
或使用列表理解的一行程序:

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

所需的标准numpy函数是
np.column\u stack

>>> np.column_stack(([1, 2, 3], [4, 5, 6]))
array([[1, 4],
       [2, 5],
       [3, 6]])
因此,使用
组合
索引
数组

np.column_stack((portfolio, index))
将产生如下结果:

[[portfolio_value1, index_value1],
 [portfolio_value2, index_value2],
 [portfolio_value3, index_value3],
 ...]
你可以使用np.c_

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

它将为您提供:

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

很简单,你可以试试这个

a=list(zip(portfolio, index))

结果应该是一个
numpy.array
+1我不知道这一点,这比创建一个新数组并使用
.t
要好得多!