【问题标题】:Python: Mapping dictionary over multiple np.arraysPython:在多个 np.arrays 上映射字典
【发布时间】:2018-07-22 13:42:53
【问题描述】:

如何将字典映射到 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])]

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

有什么建议吗?

【问题讨论】:

  • 你试过了吗?

标签: python pandas numpy dictionary


【解决方案1】:

这是一种解决方案。

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])]

【讨论】:

  • 完美!有效!如果我想得到每个数组的总和,我该如何从这里开始?
  • list(map(np.sum, lst)) 应该可以工作。但如果您有更多问题,请更新您的原始问题/提出新问题。这种方式 SO 对更广泛的受众有用。如果此答案有效,请随时接受(在左侧打勾)。
猜你喜欢
  • 2018-12-31
  • 1970-01-01
  • 2020-03-15
  • 1970-01-01
  • 2014-06-30
  • 2012-09-17
  • 2015-10-17
  • 2012-08-27
相关资源
最近更新 更多