将多个数据文件组合成储存在字典中的np.arrays。
将多个数据文件组合成储存在字典中的np.arrays。
我正在尝试加载一个大型数据集。我有 ~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]
中。
admin 更改状态以发布 2023年5月24日