Modal value of an array
Steven D'Aprano
steve at REMOVE.THIS.cybersource.com.au
Thu Mar 29 01:08:56 EDT 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.
More information about the Python-list
mailing list