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

L

Larry

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
 
P

Paul Hankin

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
 
B

Bernard

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 loop2

I'm pretty sure there must be an easier way though :)
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
 
J

John Machin

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!!
 
L

Larry

Thanks to all those who replied to this post. I'm gonna try your
suggestions. They are a great help.
 
B

Bernard

d'oh!

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)

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!!
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,776
Messages
2,569,603
Members
45,189
Latest member
CryptoTaxSoftware

Latest Threads

Top