【发布时间】:2015-10-23 13:08:22
【问题描述】:
我正在尝试加载一个大型数据集。我有大约 8k 天的文件,每个文件都有数百个测量值的数组。我可以将单日文件加载到一组 numpy 数组中,并将其存储在字典中。为了加载全天文件,我用所需的键初始化了一个字典。然后我遍历文件列表,加载一个,并尝试将它们存储在更大的字典中。
all_measurements = np.asarray([get_n_measurements(directory, name) for name in files])
error_files = []
temp = np.full(all_measurements.sum()
all_data = {key: temp.copy(),
fill_value, dtype=np.float64) for key in sample_file}
start_index = 0
for data_file, n_measurements in zip(file_list, all_measurements):
file_data = one_file(data_file) # Load one data file into a dict.
for key, value in file_data.iteritems(): # I've tried .items(), .viewitems() as well.
try:
all_data[key][start_index : start_index + n_measurements] = file_data[key]
except ValueError, msg:
error_files.append((data_file, msg))
finally:
start_index += n_measurements
我检查了one_file() 的结果,我知道它正确加载了数据。但是,组合 all_data 的行为就好像 key:value 对中的每个值都相同。
以下是数据结构的示例:
all_data = {'a': array([ 0.76290858, 0.83449302, ..., 0.06186873]),
'b': array([ 0.32939997, 0.00111448, ..., 0.72303435])}
file_data = {'a': array([ 0.00915347, 0.39020354]),
'b': array([ 0.8992421 , 0.18964702])}
在for 循环的每次迭代中,我尝试将file_data 插入all_data 的索引[start_index : start_index + n_measurements]。
【问题讨论】:
-
我不确定我是否理解整个问题,但是像这样的工作,即结合两个字典吗? stackoverflow.com/questions/38987/… 或:stackoverflow.com/questions/1781571/…
-
@db1234 不会。
all_data和file_data中的键是相同的。存储在all_data中的数组长度约为 6M。存储在file_data中的数组长度小于 1k。每个file_data都包含我尝试加入的时间序列,按顺序在all_data中。 -
为了更清楚,请提供一些示例数据结构以及所需的字典、列表等。请解释 $file_data$ 是什么意思,为什么使用“$”字符
-
@GeorgeSolymosi $file_data$ 是一种类型。它应该已经读取了 file_data。 file_data 只是我从单个数据文件加载的 numpy 数组的字典。我已将数据示例添加到原始帖子中。
-
也许对文件进行循环并附加密钥。类似于:all_data['a'].append(file_data['a'])
标签: python arrays python-2.7 numpy dictionary