我在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]])
答案 0 :(得分:1)
需要Python3。此外,必须按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]])
答案 1 :(得分:0)
一些理解可以做到:
git check-ignore -v <pathname>
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)