# Modal value of an array

Steven D'Aprano steve at REMOVE.THIS.cybersource.com.au
Thu Mar 29 07:08:56 CEST 2007

```On Wed, 28 Mar 2007 20:40:22 -0700, datta.abhirup at gmail.com wrote:

> Hi
>
>  How can I find out the modal value in an array. That is the value
> which occurs maximum time in the sequence ..
>
> e.g. if my array has values like [2,3,2,2,2,4,2,2]  definitely the
> maximum time 2 occurs in the array. so this function should be able to
> return 2 as a result ..
>
> So is there any function in built in python which can do that ?

No. You need to create a frequency table, then do a reverse-lookup on the
frequency table. Assuming your data is small, this should be plenty fast
enough.

def mode(data):
# create a frequency table
freq = {}
for x in data:
freq[x] = freq.get(x, 0) + 1
# find the maximum frequency
F = max(freq.values())
# return the items (one or more) with that frequency
modes = []
for x, f in freq.items():
if f == F:
modes.append(x)
return modes

>>> mode([2,3,2,2,2,4,2,2])
[2]
>>> mode([2,3,2,3,2,3,4,1])
[2, 3]

--
Steven.

```