[Numpy-discussion] fast method to to count a particular value in a large matrix

David Verelst david.verelst at gmail.com
Sun Feb 5 19:02:37 EST 2012


Just out of curiosity, what speed-up factor did you achieve?

Regards,
David

On 04/02/12 22:20, Naresh wrote:
> Warren Weckesser<warren.weckesser<at>  enthought.com>  writes:
>
>>
>> On Sat, Feb 4, 2012 at 2:35 PM, Benjamin Root<ben.root<at>  ou.edu>  wrote:
>>
>>
>> On Saturday, February 4, 2012, Naresh Pai<npai<at>  uark.edu>  wrote:>  I am
> somewhat new to Python (been coding with Matlab mostly). I am trying to
>>> simplify (and expedite) a piece of code that is currently a bottleneck in a
> larger
>>> code.>  I have a large array (7000 rows x 4500 columns) titled say, abc, and
> I am trying>  to find a fast method to count the number of instances of each
> unique value within>  it. All unique values are stored in a variable, say,
> unique_elem. My current code
>>
>>> is as follows:>  import numpy as np>  #allocate space for storing element
> count>  elem_count = zeros((len(unique_elem),1))>  #loop through and count number
> of unique_elem>  for i in range(len(unique_elem)):
>>
>>>     elem_count[i]= np.sum(reduce(np.logical_or,(abc== x for x
> in [unique_elem[i]])))>  This loop is bottleneck because I have about 850 unique
> elements and it takes>  about 9-10 minutes. Can you suggest a faster way to do
> this?
>>
>>> Thank you,>  Naresh>
>> no.unique() can return indices and reverse indices.  It would be trivial to
> histogram the reverse indices using np.histogram().
>>
>> Instead of histogram(), you can use bincount() on the inverse indices:u, inv =
> np.unique(abc, return_inverse=True)n = np.bincount(inv)u will be an array of the
> unique elements, and n will be an array of the corresponding number of
> occurrences.Warren
>>
>>
>>
>> _______________________________________________
>> NumPy-Discussion mailing list
>> NumPy-Discussion<at>  scipy.org
>> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>>
> The histogram() solution works perfect since unique_elem is ordered. I
> appreciate everyone's help.
>
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion




More information about the NumPy-Discussion mailing list