【问题标题】:Map NumPy array entries to dictionary value将 NumPy 数组条目映射到字典值
【发布时间】:2019-12-26 06:11:20
【问题描述】:

我目前有一个如下所示的 NumPy 数组:

>>> print(a)
[[ 1.      26.9952  30.6501  10.06952  1.61731]
 [ 2.      26.9952  30.6501  10.06952  1.61731]
 [ 0.      26.9952  30.6501  10.06952  1.61731]
 [ 2.      26.9952  30.6501  10.06952  1.61731]
 [ 3.      26.9952  30.6501  10.06952  1.61731]
 [ 2.      26.9952  30.6501  10.06952  1.61731]
 [ 1.      26.9952  30.6501  10.06952  1.61731]
 [ 2.      26.9952  30.6501  10.06952  1.61731]
 [ 3.      26.9952  30.6501  10.06952  1.61731]
 [ 2.      26.9952  30.6501  10.06952  1.61731]]

我有一本像这样的字典:

map_dict = {0.0: 'a', 1.0: 'b', 2.0: 'c', 3.0: 'd'}

我要做的是将 NumPy 数组a 第一列中的所有值转换为map_dict 中的相应值。有没有一种有效的方法可以做到这一点?我正在使用的当前方法是通过一个 for 循环并在执行过程中迭代地替换值。

【问题讨论】:

  • 向我们展示当前的方法,以便我们了解如何改进它。
  • @Boendal 感谢您的建议。我的意思不是听起来时髦或傲慢,但我故意没有在我的问题中包含代码,因为我觉得我的描述和示例足以解决问题,并且添加代码块会使我的问题变得不必要长。

标签: python numpy dictionary


【解决方案1】:

你可以试试np.vectorize:

>>> import numpy as np
>>> a = np.arange(12).reshape(4,3)
>>> a
array([[ 0,  1,  2],
       [ 3,  4,  5],
       [ 6,  7,  8],
       [ 9, 10, 11]])
>>> map_dict = {0.0: 'a', 3.0: 'b', 6.0: 'c', 9.0: 'd'}
>>> a = a.astype(object)
>>> a[:,0] = np.vectorize(map_dict.get)(a[:,0])
>>> a
array([['a', 1, 2],
       ['b', 4, 5],
       ['c', 7, 8],
       ['d', 10, 11]], dtype=object)

【讨论】:

    猜你喜欢
    • 2016-03-05
    • 2013-09-21
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    • 2023-01-01
    • 1970-01-01
    • 2021-10-17
    相关资源
    最近更新 更多