【问题标题】:Converting two lists into a matrix将两个列表转换为矩阵
【发布时间】:2013-09-14 19:40:32
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

    标签: python arrays numpy matrix


    【解决方案1】:

    你想要的标准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],
     ...]
    

    【讨论】:

    • +1 我不知道这个,比创建一个新数组并使用.T
    【解决方案2】:

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

    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.array
    【解决方案3】:

    你可以使用 np.c_

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

    它会给你:

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

    【讨论】:

      【解决方案4】:

      简单的你可以试试这个

      a=list(zip(portfolio, index))
      

      【讨论】:

        猜你喜欢
        • 2011-01-29
        • 1970-01-01
        • 2010-12-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-27
        相关资源
        最近更新 更多