Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从字典中提取多个数组并用numpy堆叠它们的Pythonic方法_Python_Arrays_Numpy_Dictionary_Numpy Ndarray - Fatal编程技术网

从字典中提取多个数组并用numpy堆叠它们的Pythonic方法

从字典中提取多个数组并用numpy堆叠它们的Pythonic方法,python,arrays,numpy,dictionary,numpy-ndarray,Python,Arrays,Numpy,Dictionary,Numpy Ndarray,我有一本字典,里面有数组。我想用numpy获取这些数组,并使用np.dstack对它们进行堆栈,但我不知道如何进行。 字典格式如下所示,当然是减去nxx。此外,我以一个序列显示nx数字,虽然字典包含一个键n1,n2,直到最高的nvalue,但它们实际上并不在一个序列中 {'n0': masked_array, 'n1': masked_array, 'n2': masked_array, ..., 'nxx': masked_array} 每对的数据显示为 'n0': masked_array

我有一本字典,里面有数组。我想用numpy获取这些数组,并使用np.dstack对它们进行堆栈,但我不知道如何进行。 字典格式如下所示,当然是减去nxx。此外,我以一个序列显示nx数字,虽然字典包含一个键n1,n2,直到最高的nvalue,但它们实际上并不在一个序列中

{'n0': masked_array, 'n1': masked_array, 'n2': masked_array, ..., 'nxx': masked_array}
每对的数据显示为

'n0': masked_array(
  data=[[0.13530391454696655, 0.26814308762550354, 0.26814308762550354,
         ..., --, --, --],
        [0.21222707629203796, 0.22386012971401215, 0.19620446860790253,
         ..., --, --, --],
        [0.22701908648014069, 0.23818181455135345, 0.23777709901332855,
         ..., --, --, --],
        ...,
        [--, --, --, ..., --, --, --],
        [--, --, --, ..., --, --, --],
        [--, --, --, ..., --, --, --]],
  mask=[[False, False, False, ...,  True,  True,  True],
        [False, False, False, ...,  True,  True,  True],
        [False, False, False, ...,  True,  True,  True],
        ...,
        [ True,  True,  True, ...,  True,  True,  True],
        [ True,  True,  True, ...,  True,  True,  True],
        [ True,  True,  True, ...,  True,  True,  True]],
  fill_value=-inf,
  dtype=float32)
使用指定每个实体的打印

print(arraydict['n0'])
提供

[[0.13530391454696655 0.26814308762550354 0.26814308762550354 ... -- --
  --]
 [0.21222707629203796 0.22386012971401215 0.19620446860790253 ... -- --
  --]
 [0.22701908648014069 0.23818181455135345 0.23777709901332855 ... -- --
  --]
 ...
 [-- -- -- ... -- -- --]
 [-- -- -- ... -- -- --]
 [-- -- -- ... -- -- --]]
因此,如果它们是单独的变量,我可以做一些类似的事情(遵循n的顺序很重要)

在我的一生中,我无法概念化如何使用np.dstack从字典中从n0开始作为

arraystack = np.dstack(([arraydict[key] for key in arraydict]))
似乎有效,但似乎无法维持n0、n1、n2、n3序列。

您可以尝试

{'n0': masked_array, 'n1': masked_array, 'n2': masked_array, ..., 'nxx': masked_array}
arraystack = np.dstack([arraydict['n'+str(i)] for i in range(len(arraydict))])

这将确保保留顺序。

您使用的Python版本是什么?对于较旧版本的python(实际上字典不保留条目的顺序),我会选择A或对键进行排序,例如,
[arraydict[key]For key in sorted(arraydict.keys())]
。如果您只需要提取
数据
数组,那么foreach
masked_数组
-这样如何
np.dstack([x.data for x in arraydict.values()])
噢,伙计,这是金色的,它工作得很好。现在我需要弄清楚如何使用相同的命令将单独的数组添加到arraystack中。“arraystack=np.dstack([arraydict['n'+str(i)]表示范围内的i(len(arraydict))],separray)”似乎不是正确的格式,但我会想出来的。arraystack=np.dstack([arraydict['n'+str(i)]表示范围内的i(len(arraydict))]+[separray])应该适用。你是冠军。非常感谢。