By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
444,089 Members | 2,260 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 444,089 IT Pros & Developers. It's quick & easy.

frequency count or number of occurences of a number in an array

P: n/a
Dear all,

I'm new to Python. I have a file (an image file actually) that I need
to read pixel by pixel. It's an 8-bit integer type. I need to get the
statistics like mean, standard deviation, etc., which I know a little
bit already from reading numpy module. What I want to know is how to
get the number of occurences of numeric element in an array. Say,

b = array(([2, 2, 3, 4, 5, 5])

b.count(2) certainly does not work. Is there any more efficient way
other than converting this as string characters? My data will produce
a fairly large array like 400x400 = 160000 values. Hoping you guys can
help me.

Larry
Mar 12 '08 #1
Share this Question
Share on Google+
5 Replies


P: n/a
On Mar 12, 10:26 am, Larry <larry.cebu...@gmail.comwrote:
I'm new to Python. I have a file (an image file actually) that I need
to read pixel by pixel. It's an 8-bit integer type. I need to get the
statistics like mean, standard deviation, etc., which I know a little
bit already from reading numpy module. What I want to know is how to
get the number of occurences of numeric element in an array. Say,
Something like this should do the job:

histogram = [0] * 256
for x in my_array:
histogram[x] += 1

--
Paul Hankin
Mar 12 '08 #2

P: n/a
Hey Larry,

that one is fairly easy:
>>from array import array
array('i', [1, 2, 3, 4, 5, 1, 2])
def count(x, arr):
cpt = 0 # declare a counter variable
for el in arr: # for each element in the array
if el == x: # when it is equal to the 'x' value
cpt+=1 # increment the counter variable by one
return cpt # return the counter after the loop
>>count(1,a)
2

I'm pretty sure there must be an easier way though :)
On 12 mar, 06:26, Larry <larry.cebu...@gmail.comwrote:
Dear all,

I'm new to Python. I have a file (an image file actually) that I need
to read pixel by pixel. It's an 8-bit integer type. I need to get the
statistics like mean, standard deviation, etc., which I know a little
bit already from reading numpy module. What I want to know is how to
get the number of occurences of numeric element in an array. Say,

b = array(([2, 2, 3, 4, 5, 5])

b.count(2) certainly does not work. Is there any more efficient way
other than converting this as string characters? My data will produce
a fairly large array like 400x400 = 160000 values. Hoping you guys can
help me.

Larry
Mar 12 '08 #3

P: n/a
On Mar 12, 10:29 pm, Bernard <bernard.ch...@gmail.comwrote:
Hey Larry,

that one is fairly easy:
>from array import array
array('i', [1, 2, 3, 4, 5, 1, 2])
def count(x, arr):

cpt = 0 # declare a counter variable
for el in arr: # for each element in the array
if el == x: # when it is equal to the 'x' value
cpt+=1 # increment the counter variable by one
return cpt # return the counter after the loop>>count(1,a)

2
Hey Bernard, you have just laboriously reinvented the count method:
>>from array import array
a = array('i', [1, 2, 3, 4, 5, 1, 2])
a.count(1)
2
>>>
which Larry has already said doesn't do the job -- the job is to
create a histogram!!
Mar 12 '08 #4

P: n/a
Thanks to all those who replied to this post. I'm gonna try your
suggestions. They are a great help.
Mar 13 '08 #5

P: n/a
d'oh!

On 12 mar, 07:58, John Machin <sjmac...@lexicon.netwrote:
On Mar 12, 10:29 pm, Bernard <bernard.ch...@gmail.comwrote:
Hey Larry,
that one is fairly easy:
>>from array import array
>>array('i', [1, 2, 3, 4, 5, 1, 2])
>>def count(x, arr):
* * * * cpt = 0 # declare a counter variable
* * * * for el in arr: # for each element in the array
* * * * * * * * if el == x: # when it is equal to the 'x' value
* * * * * * * * * * * * cpt+=1 # increment thecounter variable by one
* * * * return cpt # return the counter after the loop>>count(1,a)
2

Hey Bernard, you have just laboriously reinvented the count method:
>from array import array
a = array('i', [1, 2, 3, 4, 5, 1, 2])
a.count(1)
2

which Larry has already said doesn't do the job -- the job is to
create a histogram!!
Mar 13 '08 #6

This discussion thread is closed

Replies have been disabled for this discussion.