如何将python dict转换为3D numpy数组?

2024-06-17 13:41:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python dict,其中每个值都是一个2D数组(dim1,dim2)。 我想把它转换成一个3D的numy数组(dim1,dim2,n_keys)。 如果没有很多嵌套循环,我怎么能快速完成呢?在

编辑: 示例:

featureMatrix = np.empty((len(featureDict.values()[0]),
       len(featureDict.values()[0][0,:]),
       len(featureDict.keys())))

for k,keys in enumerate(featureDict.keys()):
   value=featureDict[keys]
   for i in range(0,len(value[:,0]),1):
       for j in range(0,len(value[0,:]),1):
           featureMatrix[i,j,k]=value[i,j]

Tags: inforlenvaluerange数组keysdict
1条回答
网友
1楼 · 发布于 2024-06-17 13:41:51

dict-索引是无序的,因此您可能不想简单地堆叠它们,但是您可以简单地用array3d = np.dstack(somedict.values())来堆叠值。在

以下是一些例子:

>>> somedict = dict(a = np.arange(4).reshape(2,2),
                    b = np.arange(4).reshape(2,2) + 10,
                    c = np.arange(4).reshape(2,2) + 100,
                    d = np.arange(4).reshape(2,2) + 1000)

>>> array3d = np.dstack(somedict.values())
>>> array3d.shape
(2, 2, 4)
>>> array3d # unordered because of dict unorderedness, order depends for all practical purposes on chance
array([[[  10,    0, 1000,  100],
        [  11,    1, 1001,  101]],

       [[  12,    2, 1002,  102],
        [  13,    3, 1003,  103]]])

或者,如果要按字典的键对其进行排序,请执行以下操作:

^{pr2}$

相关问题 更多 >