【问题标题】:Python: Turn a 2D numpy array into a dictionaryPython:将 2D numpy 数组转换为字典
【发布时间】:2017-07-06 11:35:09
【问题描述】:

考虑我有一个类似的数组:

c = [["a","b","a"],[1,2,3]]

现在我需要将这两个部分组合起来,并且我想将其变成一个字典,它计算组合出现的频率(值是出现的次数)。 它应该看起来像这样:

combinations = {("a",1):1, ("b",2):1, ("a",3):1)}

我是一个完全的初学者,并且有一些方法,例如:

(c[0][0],[-1][0]),(c[0][1],[-1][1]),...

等等。用于创建我需要的对,但这在我的数组大小不同的情况下不是很有用(尽管两个部分应该保持相同的大小)。另外,我不知道如何将出现次数作为值。

非常感谢任何帮助!

【问题讨论】:

  • from collections import Counter; Counter(zip(*c)) ?
  • 这对我来说似乎很好用!非常感谢!有没有办法摆脱输出中的“Counter()”?
  • 您应该阅读有关 Counters 的信息,您可能希望保持这种状态,但您始终可以使用 dict() 获取常规字典

标签: python arrays numpy dictionary


【解决方案1】:

您可以使用zip 组合两个子列表,并使用count 对列表中的特定元素进行计数。

    >>> c = [['a','b','a','a'],[1,2,3,1]]
    >>> pairs = zip(c[0],c[1])
    >>> pairs
    [('a', 1), ('b', 2), ('a', 3), ('a', 1)]

    >>> result = {i: pairs.count(i) for i in pairs}
    >>> result
    {('a', 1): 2, ('b', 2): 1, ('a', 3): 1}

最后一个命令使用Dict Comprehension

【讨论】:

  • 在将“pairs”再次变成列表后,它对我有用。非常感谢!
猜你喜欢
  • 2021-05-15
  • 2013-06-30
  • 2015-12-26
  • 2018-05-28
  • 2019-05-29
  • 2021-12-29
  • 2016-03-24
  • 1970-01-01
相关资源
最近更新 更多