将python中的字典字典转换为python中的numpy数组
我有一本python词典,如以下示例所示: 例如:将python中的字典字典转换为python中的numpy数组,python,numpy,Python,Numpy,我有一本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':
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个项目,因此,在数组中,将有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]])
一些理解可以做到这一点,比如:
代码:
测试代码:
结果:
需要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]])
谢谢这个函数返回一个列表列表。但是我想要一个numpy数组。你知道怎么做吗?在Python2.7中也可以。在Python2中dict不是顺序。7@StephenRauchDicts在Python 3.7之前也没有排序。@Tomothy32,非常正确,除了CPython在其余部分上跳了一步…:-)@Stephernauch这是真的,除了在3.6中,它被认为是“实现细节,不应该依赖”。
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]]
>>> 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]])