将python中的dictionary转换为python中的numpy数组

2024-04-19 20:40:42 发布

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

我有一个python词典,如以下示例:

示例:

result = {
    1: {'A': 11472, 'C': 8405, 'T': 11428, 'G': 6613}, 
    2: {'A': 11678, 'C': 9388, 'T': 10262, 'G': 6590}, 
    3: {'A': 2945, 'C': 25843, 'T': 6980, 'G': 2150}, 
    4: {'A': 1149, 'C': 24552, 'T': 7000, 'G': 5217}, 
    5: {'A': 27373, 'C': 3166, 'T': 4494, 'G': 2885}, 
    6: {'A': 19300, 'C': 4252, 'T': 7510, 'G': 6856}, 
    7: {'A': 17744, 'C': 5390, 'T': 7472, 'G': 7312}
}

我想使用内部字典的值在python中创建一个numpy数组。事实上,在这个例子中有7个包含4个项目的内部字典,所以在array中有7个包含4个项目的列表。因此,numpy数组中的每个项都是内部字典中的值之一。 例如,这是第一个内部字典:

{'A': 11472, 'C': 8405, 'T': 11428, 'G': 6613}

这将是numpy数组中的第一个列表:

[ 11472,  8405,  11428,  6613]

我试图在python中使用以下行来实现这一点,但它不会返回预期的输出。你知道吗

import pandas as pd
df = pandas.DataFrame(result, index=[0])

你知道怎么修吗?你知道吗

以下是预期输出:

array([[ 11472,  8405,  11428,  6613],
       [ 11678,  9388,  10262 ,  6590],
       [ 2945,  25843,  6980 ,  2150],
       [ 1149,  24552,  7000 ,  5217],
       [ 27373,  3166,  4494 ,  2885],
       [ 19300,  4252,  7510,  6856],
       [ 17744,  5390,  7472,  7312]])

Tags: 项目importnumpy示例pandasdf列表字典
2条回答

一些理解可以这样做:

代码:

data = [[result[idx][k] for k in 'ACTG']
        for idx in sorted(result)
        ]

an_array = np.array(data)

测试代码:

result = {1: {'A': 11472, 'C': 8405, 'T': 11428, 'G': 6613},
          2: {'A': 11678, 'C': 9388, 'T': 10262, 'G': 6590},
          3: {'A': 2945, 'C': 25843, 'T': 6980, 'G': 2150},
          4: {'A': 1149, 'C': 24552, 'T': 7000, 'G': 5217},
          5: {'A': 27373, 'C': 3166, 'T': 4494, 'G': 2885},
          6: {'A': 19300, 'C': 4252, 'T': 7510, 'G': 6856},
          7: {'A': 17744, 'C': 5390, 'T': 7472, 'G': 7312}}

data = [[result[idx][k] for k in 'ACTG']
        for idx in sorted(result)
        ]

print(data)

结果:

[[11472, 8405, 11428, 6613], 
 [11678, 9388, 10262, 6590], 
 [2945, 25843, 6980, 2150], 
 [1149, 24552, 7000, 5217], 
 [27373, 3166, 4494, 2885], 
 [19300, 4252, 7510, 6856], 
 [17744, 5390, 7472, 7312]]

需要Python 3。此外,值必须按ACTG顺序插入。你知道吗

>>> np.array([list(val.values()) for val in result.values()])
array([[11472,  8405, 11428,  6613],
       [11678,  9388, 10262,  6590],
       [ 2945, 25843,  6980,  2150],
       [ 1149, 24552,  7000,  5217],
       [27373,  3166,  4494,  2885],
       [19300,  4252,  7510,  6856],
       [17744,  5390,  7472,  7312]])

相关问题 更多 >