This is probably me just being stupid. But what is the reason for this peace of code not to be working:<div>index_nSize=numpy.arange(0,length,nSize)</div><div><div>lsPhasedValues = set([aLoci[i] for i in xrange(length) if (i%nSize==0 and aLoci[i]&gt;0)])</div>
<div>lsPhasedValues1 = numpy.where(aLoci[index_nSize]&gt;0)</div><div><div>print aLoci[index_nSize]</div><div>print lsPhasedValues==lsPhasedValues1,lsPhasedValues,lsPhasedValues1</div></div><div><div>[0 0 6 0 0 3]</div><div>
False set([3, 6]) (array([2, 5]),)</div></div><div><br></div><br><div class="gmail_quote">2010/2/24 Bruno Santos <span dir="ltr">&lt;<a href="mailto:bacmsantos@gmail.com">bacmsantos@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br><br><div class="gmail_quote">2010/2/24 Chris Colbert <span dir="ltr">&lt;<a href="mailto:sccolbert@gmail.com" target="_blank">sccolbert@gmail.com</a>&gt;</span><div class="im"><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div><div>In [4]: %timeit a = np.random.randint(0, 20, 100)</div><div>100000 loops, best of 3: 4.32 us per loop</div><div><br></div><div>In [5]: %timeit (a&gt;=10).sum()</div><div>100000 loops, best of 3: 7.32 us per loop</div>


<div><br></div></div><div>In [8]: %timeit np.where(a&gt;=10)</div><div>100000 loops, best of 3: 5.36 us per loop</div><div><br></div><div><br></div><div>am i missing something?</div></blockquote><div><br></div></div><div>
I guess you are. </div>
<div>In [23]: a = np.random.randint(0, 20, 1000)</div><div><br></div><div>In [24]: %timeit np.where(a&gt;=10)</div><div>10000 loops, best of 3: 22.4 us per loop</div><div><br></div><div>In [25]: %timeit (a&gt;=10).sum()</div>

<div>100000 loops, best of 3: 11.7 us per loop</div><div> </div><div>np.random.where doesn&#39;t scale very well. </div><div><div></div><div class="h5"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div><div></div><div><br><div class="gmail_quote">On Wed, Feb 24, 2010 at 12:50 PM, Bruno Santos <span dir="ltr">&lt;<a href="mailto:bacmsantos@gmail.com" target="_blank">bacmsantos@gmail.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">In both versions your lsPhasedValues contains the number of positions in the array that match a certain criteria. What I need in that step is the unique values and not their positions. <br>


<br><div class="gmail_quote"><div>2010/2/24 Robert Kern <span dir="ltr">&lt;<a href="mailto:robert.kern@gmail.com" target="_blank">robert.kern@gmail.com</a>&gt;</span><br>
</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div></div><div>On Wed, Feb 24, 2010 at 11:19, Bruno Santos &lt;<a href="mailto:bacmsantos@gmail.com" target="_blank">bacmsantos@gmail.com</a>&gt; wrote:<div>


<div></div><div><br>

&gt; It seems that the python 2.6.4 has a more efficient implementation of the<br>
&gt; lists. It runs faster on this version and slower on 2.5.4 on the same<br>
&gt; machine with debian. A lot faster in fact.<br>
&gt; I was trying to change my headche for the last couple of weeks. But you<br>
&gt; migth give me a lot more optimizations that I can pick. I am trying to<br>
&gt; optimize the following function<br>
&gt; def hypergeometric(self,lindex,rindex):<br>
&gt;         &quot;&quot;&quot;<br>
&gt;         loc.hypergeometric(lindex,rindex)<br>
&gt;         Performs the hypergeometric test for the loci between lindex and<br>
&gt; rindex.<br>
&gt;         Returns the minimum p-Value<br>
&gt;         &quot;&quot;&quot;<br>
&gt;         aASense = self.aASCounts[lindex*nSize:(rindex+1)*nSize]<br>
&gt;         #Create the subarray to test<br>
&gt;         aLoci =<br>
&gt; numpy.hstack([self.aSCounts[lindex*nSize:(rindex+1)*nSize],aASense[::-1]])<br>
&gt;         #Get the values to test<br>
&gt;         length = len(aLoci)<br>
&gt;         lsPhasedValues = set([aLoci[i] for i in xrange(length) if i%nSize==0<br>
&gt; and aLoci[i]&gt;0])<br>
&gt;         m = length/nSize<br>
&gt;         n = (length-1)-(length/nSize-1)<br>
&gt;         #Create an array to store the Pvalues<br>
&gt;         lsPvalues = []<br>
&gt;         append = lsPvalues.append<br>
&gt;         #Calculate matches in Phased and non Phased position<br>
&gt;         for r in lsPhasedValues:<br>
&gt;             #Initiate number of matches to 0<br>
&gt;             q = sum([1 for j in xrange(length) if j%nSize==0 and<br>
&gt; aLoci[j]&gt;=r])<br>
&gt;             k = sum([1 for j in xrange(length) if aLoci[j]&gt;=r])<br>
&gt;             key = &#39;%i,%i,%i,%i&#39;%(q-1,m,n,k)<br>
&gt;             try:append(dtPhyper[key])<br>
&gt;             except KeyError:<br>
&gt;                 value = self.lphyper(q-1, m, n, k)<br>
&gt;                 append(value)<br>
&gt;                 dtPhyper[key]=value<br>
&gt;         return min(lsPvalues)<br>
&gt; Is there any efficient way to test the array simultaneous for two different<br>
&gt; conditions?<br>
<br>
</div></div></div></div><div><div></div><div>j = np.arange(length)<br>
j_nSize_mask = ((j % nSize) == 0)<br>
lsPhasedValues = (j_nSize_mask &amp; (aLoci &gt;= 0)).sum()<br>
...<br>
    bigALoci = (aLoci &gt;= r)<br>
    q = (j_nSize_mask &amp; bigALoci).sum()<br>
    k = bigALoci.sum()<br>
<br>
<br>
Another way to do it:<br>
<br>
j_nSize = np.arange(0, length, nSize)<br>
lsPhasedValues = (aLoci[j_nSize] &gt;= 0).sum()<br>
...<br>
    q = (aLoci[j_nSize] &gt;= r).sum()<br>
    k = (aLoci &gt;= r).sum()<br>
<font color="#888888"><br>
<br>
--<br>
</font><div><div></div><div>Robert Kern<br>
<br>
&quot;I have come to believe that the whole world is an enigma, a harmless<br>
enigma that is made terrible by our own mad attempt to interpret it as<br>
though it had an underlying truth.&quot;<br>
  -- Umberto Eco<br>
_______________________________________________<br>
NumPy-Discussion mailing list<br>
<a href="mailto:NumPy-Discussion@scipy.org" target="_blank">NumPy-Discussion@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/numpy-discussion" target="_blank">http://mail.scipy.org/mailman/listinfo/numpy-discussion</a><br>
</div></div></div></div></blockquote></div><br>
<br>_______________________________________________<br>
NumPy-Discussion mailing list<br>
<a href="mailto:NumPy-Discussion@scipy.org" target="_blank">NumPy-Discussion@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/numpy-discussion" target="_blank">http://mail.scipy.org/mailman/listinfo/numpy-discussion</a><br>
<br></blockquote></div><br>
</div></div><br>_______________________________________________<br>
NumPy-Discussion mailing list<br>
<a href="mailto:NumPy-Discussion@scipy.org" target="_blank">NumPy-Discussion@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/numpy-discussion" target="_blank">http://mail.scipy.org/mailman/listinfo/numpy-discussion</a><br>
<br></blockquote></div></div></div><br>
</blockquote></div><br></div>