我进行了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
答案 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