46

我会尽量讲清楚,首先我会解释为什么要将两个数组转换为矩阵。

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

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

但我将数据作为两个单独的一维数组:

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

那么如何将第二种情况转换为第一种情况。我试图np.insert将第二个数组添加到我在 python shell 中的测试矩阵中,我的问题是将第一个数组转置为单列矩阵。

关于如何在没有命令式循环的情况下实现这一点的任何帮助都会很棒。

4

4 回答 4

104

您想要的标准 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],
 ...]
于 2013-09-10T23:25:03.900 回答
5

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

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

或者使用列表理解的单行:

matrix2 = [[portfolio[i], index[i]] for i in range(len(portfolio))]
于 2013-09-10T23:03:28.743 回答
3

您可以使用 np.c_

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

它会给你:

np.array([[1,4], [2,5], [3,6]])
于 2018-09-26T06:45:33.797 回答
1

很简单,你可以试试这个

a=list(zip(portfolio, index))
于 2021-01-13T17:45:11.557 回答