如何计算numpy数组中元素的频率?

2024-09-30 20:35:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个三维numpy数组,它包含有重复的元素。 counterTraj.shape (13530, 1, 1 例如counterTraj包含这样的元素:我只显示了几个元素:

         array([[[136.]],

       [[129.]],

       [[130.]],

       ...,

       [[103.]],

       [[102.]],

       [[101.]]])
```

我需要找到不同元素的频率:例如:136计数5(假设),101计数12(假设)。数组元素不是固定的,并且随输入数据而变化。我试着: from collections import Counter Counter(counterTraj) 产生以下错误:

^{pr2}$
    /usr/lib/python3.6/collections/__init__.py in __init__(*args, 
   **kwds)
         533             raise TypeError('expected at most 1 arguments, 
      got %d' % len(args))
          534         super(Counter, self).__init__()
      --> 535         self.update(*args, **kwds)
         536 
       537     def __missing__(self, key):

     /usr/lib/python3.6/collections/__init__.py in update(*args, 
    **kwds)
         620                     super(Counter, self).update(iterable) # 
     fast path when counter is empty
         621             else:
      --> 622                 _count_elements(self, iterable)
       623         if kwds:
       624             self.update(kwds)

     TypeError: unhashable type: 'numpy.ndarray'

如何找到频率元素的出现,找到频率最高的元素?在


Tags: selfnumpy元素initlibusrcounterargs
1条回答
网友
1楼 · 发布于 2024-09-30 20:35:41

^{}return_counts=True参数一起使用,这将返回数组中每个元素的计数。在

# sample array
In [89]: np.random.seed(23)
In [90]: arr = np.random.randint(0, 10, 20)

In [92]: a, cnts = np.unique(arr, return_counts=True)
In [94]: high_freq, high_freq_element = cnts.max(), a[cnts.argmax()]

In [95]: high_freq, high_freq_element
Out[95]: (4, 9)

要仅选择出现在特定频率阈值以上的元素,可以使用:

^{pr2}$

相关问题 更多 >