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

Discussion in 'Python' started by Larry, Mar 12, 2008.

  1. Larry

    Larry Guest

    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
    Larry, Mar 12, 2008
    #1
    1. Advertising

  2. Larry

    Paul Hankin Guest

    On Mar 12, 10:26 am, Larry <> wrote:
    > 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
    Paul Hankin, Mar 12, 2008
    #2
    1. Advertising

  3. Larry

    Bernard Guest

    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 <> wrote:
    > 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
    Bernard, Mar 12, 2008
    #3
  4. Larry

    John Machin Guest

    On Mar 12, 10:29 pm, Bernard <> wrote:
    > 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!!
    John Machin, Mar 12, 2008
    #4
  5. Larry

    Larry Guest

    Thanks to all those who replied to this post. I'm gonna try your
    suggestions. They are a great help.
    Larry, Mar 13, 2008
    #5
  6. Larry

    Bernard Guest

    d'oh!

    On 12 mar, 07:58, John Machin <> wrote:
    > On Mar 12, 10:29 pm, Bernard <> wrote:
    >
    >
    >
    > > 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!!
    Bernard, Mar 13, 2008
    #6
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. x1
    Replies:
    9
    Views:
    304
    Rick DeNatale
    Oct 12, 2006
  2. Vitaliy Yanchuk

    Count occurences of vars in array

    Vitaliy Yanchuk, Jul 20, 2010, in forum: Ruby
    Replies:
    15
    Views:
    183
    Michel Demazure
    Jul 25, 2010
  3. shrek11001
    Replies:
    6
    Views:
    100
    Roy Johnson
    Oct 28, 2003
  4. Mr_Noob
    Replies:
    19
    Views:
    197
    Ted Zlatanov
    Dec 28, 2007
  5. PerlFAQ Server
    Replies:
    0
    Views:
    197
    PerlFAQ Server
    Feb 1, 2011
Loading...

Share This Page