我在循环中连接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])
然后,正如您在上面代码的第二部分中所看到的,我将循环中获得的dict(dsst_mean)与将要保存所有数据的大型字典连接起来(dsst_mean_all )。
现在dsst_mean是一个dict,其元素是不同类型的numpy数组。大部分都是float32。我的问题是,如何在连接期间保留数据类型?我的dsst_mean_all dict最终成为所有元素的float64 numpy数组。我需要这些来匹配dsst_mean以节省内存并减小文件大小。请注意,循环的所有迭代的dsst_mean具有相同的结构和相同dtype的元素。
感谢。
答案 0 :(得分:1)
您可以在列表解析中定义数组的signatureVersion
。
要么硬化:
iam
或动态:
dtype
文档:https://docs.scipy.org/doc/numpy-1.13.0/user/basics.types.html
答案 1 :(得分:0)
确定解决此问题的一种方法是避免将dsst_mean_all声明为新的空字典。这 - 我认为 - 是默认情况下所有内容都被强制转换为float64的原因。使用if / else语句,在第一次迭代时只需将dsst_mean_all设置为dsst_mean,而对于所有后续迭代,请执行连接,如我原始问题中所示。