【发布时间】:2019-07-13 00:32:29
【问题描述】:
我想使用numpy loadtxt method 来读取.csv 文件以进行我的实验。我有以下三种不同的时间序列数据,它们具有不同的特征,其中第一列是时间戳,第二列是值。
0.086206438,10
0.086425551,12
0.089227066,20
0.089262508,24
0.089744425,30
0.090036815,40
0.090054172,28
0.090377569,28
0.090514071,28
0.090762872,28
0.090912691,27
为了重现性,我分享了我使用的三个时间序列数据here。
如果我这样做
import numpy as np
fname="data1.csv"
col_time,col_window = np.loadtxt(fname,delimiter=',').T
它按预期工作。但是,我不想只读取单个文件,而是想将字典传递给col_time,col_window = np.loadtxt(types,delimiter=',').T,如下所示
protocols = {}
types = {"data1": "data1.csv", "data2": "data2.csv", "data3": "data3.csv"}
这样我就可以读取多个csv 文件,并使用一个for loop 将所有结果绘制在一个for loop 上,如下所示。
for protname, fname in types.items():
col_time, col_window = protocols[protname]["col_time"], protocols[protname]["col_window"]
rt = np.exp(np.diff(np.log(col_window)))
plt.plot(quotient_times, quotient, ".", markersize=4, label=protname)
plt.title(protname)
plt.xlabel("t")
plt.ylabel("values")
plt.legend()
plt.show()
但它给了我一个错误ValueError: could not convert string to float: b'data1'。如何将多个 csv 文件加载为字典?
【问题讨论】:
-
loadtxt仅适用于一个文件。您必须加载每一个并适当地加入数据。
标签: python python-3.x csv numpy dictionary