Python:在多个np.arrays上映射字典

时间:2018-02-12 11:37:56

标签: python pandas numpy dictionary

如何在np.ndarrays列表上映射字典?

我有一个包含一系列键和值的字典。它看起来像这样:

{1: 0.5,
 2: 0.51,
 3: 0.34,
 4: 0.38,
 5: 0.4,
 6: 0.27,}

另外,我有一个包含一系列numpy数组的列表对象,如下所示:

[array([1,2,3]),
 array([4,3,5,6]),
 array([1,4,6,2,3])]

我想在数组上映射字典,以用字典中相应的键值替换每个数组中的每个值。它会产生这样的结果:

[array([0.5,0.51,0.34]),
 array([0.38,0.34,0.4,0.27]),
 array([0.5,0.38,0.27,0.51,0.34])]

最后,我想采用上述结构中每个数组的均值,并将此值附加到数据框。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

这是一个解决方案。

import numpy as np

d = {1: 0.5,
 2: 0.51,
 3: 0.34,
 4: 0.38,
 5: 0.4,
 6: 0.27,}

lst = [np.array([1,2,3]),
 np.array([4,3,5,6]),
 np.array([1,4,6,2,3])]

lst2 = list(map(np.vectorize(d.get), lst))

# [array([ 0.5 ,  0.51,  0.34]),
#  array([ 0.38,  0.34,  0.4 ,  0.27]),
#  array([ 0.5 ,  0.38,  0.27,  0.51,  0.34])]