【发布时间】:2017-10-23 14:13:11
【问题描述】:
我在一个循环中连接 python dicts(未显示)。我在循环的第一个实例上声明了一个新的空字典(dsst_mean_all):
if station_index == 0:
dsst_mean_all = {}
for key in dsst_mean:
dsst_mean_all[key] = []
source = [dsst_mean_all, dsst_mean]
for key in source[0]:
dsst_mean_all[key] = np.concatenate([d[key] for d in source])
然后,正如您在上面代码的第二部分中看到的那样,我将在循环中获得的字典 (dsst_mean) 与将保存所有数据的大字典 (dsst_mean_all) 连接起来。
现在 dsst_mean 是一个字典,其元素是不同类型的 numpy 数组。大多数是float32。我的问题是,如何在连接期间保留数据类型?我的 dsst_mean_all 字典最终成为所有元素的 float64 numpy 数组。我需要这些来匹配 dsst_mean 以节省内存并减小文件大小。请注意,循环所有迭代的 dsst_mean 具有相同的结构和相同 dtype 的元素。
谢谢。
【问题讨论】:
-
您的描述混淆了字典、列表和数组。
source中的值是数组还是列表? -
source 只是两个字典的列表:dsst_mean_all 和 dsst_mean
-
通常我们建议将所有组件数组收集在一个列表中,并在最后进行一次连接。这通常比重复连接更快,并且更容易初始化。
标签: python numpy dictionary concatenation