如何将多个统一变量列表但不同的值连接到单个矩阵中?

时间:2014-09-03 14:05:19

标签: python list matrix

我进行了N个实验,每个实验我都有一个带日期的结果列表,即我有N个类型[[float1, date1], [float2, date2], ...]的列表

我想为共同日期的所有实验结果制作一个矩阵(NxM)。 最有效的方法是什么?

例如,

给出三个实验(N = 3),其值为:

[[float1a, date1],
[float2a, date2],
[float3a, date3]]

[[float1b, date1],
[float2b, date2],
[float3b, date3]]

[[float1c, date1],
[float2c, date2],
[float3c, date3],
[float3, date4]]

我想制作类似的东西:

date1 - float1a float1b float1c
date2 - float2a float2b float2b
date3 - float3a float3b float3c

3 个答案:

答案 0 :(得分:0)

我不确定我是否理解正确,但是通过相同日期的日期,您可以创建一个字典,其中每个键都是日期,值是该日期的实验列表。

{'date1': ['float1', 'float11', etc..], 'date2': [...], ... }

这样还可以轻松访问特定日期的结果。 它可以通过以下方式完成:

my_results_list =  [[float1, date1], [float2, date2], ...]
results_by_date = {}
for res_couple in results:
    date, result = res_couple
    if date not in results_by_date:
        results_by_date[date] = []
    results_by_date.append(result)

我确信如果这是一个问题,有更好的方法可以做到这种表现,但你明白了 希望这会有所帮助。

答案 1 :(得分:0)

使用numpy.asmatrix(data, dtype=None)功能!这是创建 MATRIX

的有效方式
import numpy as np
x = np.array([[float1, date1], [float2, date2], ...])
matrix = np.asmatrix(x)

答案 2 :(得分:0)

我看看像这样的事情使用熊猫:

import pandas as pd
from datetime import date

expr1 = [[1.2,date(2012,1,1)], [1.3,date(2012,1,2)], [1.4,date(2012,1,3)]]
expr2 = [[1.2,date(2012,1,1)], [1.3,date(2012,1,2)], [1.4,date(2012,1,3)], [1.5,date(2012,1,4)]]
expr3 = [[1.2,date(2012,1,1)], [1.3,date(2012,1,2)], [1.4,date(2012,1,3)]]

exper_df1 = pd.DataFrame(expr1).set_index(1).rename(columns={0: "Result_1"})
exper_df2 = pd.DataFrame(expr2).set_index(1).rename(columns={0: "Result_2"})
exper_df3 = pd.DataFrame(expr3).set_index(1).rename(columns={0: "Result_3"})

experiments = [exper_df2, exper_df3]

exper_df = exper_df1.join(experiments, how='inner')

这会产生一个由您寻找的日期标记的DataFrame:

            Result_1  Result_2  Result_3
1                                       
2012-01-01       1.2       1.2       1.2
2012-01-02       1.3       1.3       1.3
2012-01-03       1.4       1.4       1.4