连接保留numpy dtype的numpy数组的dicts

时间:2017-10-23 14:13:11

标签: python numpy dictionary concatenation

我在循环中连接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的元素。

感谢。

2 个答案:

答案 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,而对于所有后续迭代,请执行连接,如我原始问题中所示。