I think you can use tensordot here.  Maybe something like the following:<div><br></div><div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">from numpy.random import random</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">import numpy as np</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">ni, nj, nk = 4, 5, 6</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">bipData = random((ni,nj,nk))</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">data1 = np.zeros((nk,nk))</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br>

</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"># loop</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">for i in range(nj):</font></div><div>

<font class="Apple-style-span" face="&#39;courier new&#39;, monospace">    data1 += np.dot(np.transpose(bipData[:,i,:]), bipData[:,i,:])</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br>

</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"># tensordot</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">axes_list = [(1,2), (1,0)]</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">data2 = np.tensordot(bipData.T, bipData, axes=axes_list)</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br>

</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">diff = np.max((data1 - data2)/data1)</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">print diff</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">I hope this helps.</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><br>

</font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">-Josh</font></div><div><br></div><br><div class="gmail_quote">On Fri, Mar 11, 2011 at 1:13 PM, Thomas K Gamble <span dir="ltr">&lt;<a href="mailto:tkg@lanl.gov">tkg@lanl.gov</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div style="font-family:&#39;DejaVu Sans&#39;;font-size:8pt;font-weight:400;font-style:normal">
<p style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px">I have the followin loop in my code:</p>
<p style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"></p>
<p style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px">    for i in range(0, nFrames):</p>
<p style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px">        data += dot(transpose(bipData[:,i,:]), bipData[:,i,:]) </p>
<p style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"></p>
<p style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px">bipData is a 1024x258x256 double precision float array.</p>
<p style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"></p>
<p style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px">The loop takes all of 15 seconds to run on my computer and, with several hundred files to process...</p>
<p style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"></p>
<p style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px">Is there a way to do something like:</p>
<p style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"></p>
<p style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px">data = sum(dot(transpose(bipData), bipData))</p>
<p style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"></p>
<p style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px">with dot done on the desired axis of bipData?</p>
<p style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px">This might give a fair speed increase.  Or perhaps a different approach I&#39;m not seeing?</p>
<p style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"></p>
<p style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px">-- </p>
<p style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px">Thomas K. Gamble</p>
<p style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px">Research Technologist, System/Network Administrator</p>
<p style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px">Chemical Diagnostics and Engineering (C-CDE)</p>
<p style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px">Los Alamos National Laboratory</p>
<p style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px">MS-E543,p:<a href="tel:505-665-4323" target="_blank">505-665-4323</a> f:<a href="tel:505-665-4267" target="_blank">505-665-4267</a></p>


<p style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"></p>
<p style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px">&quot;There cannot be a crisis next week. My schedule is already full.&quot;</p>
<p style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px">    Henry Kissinger</p></div><br>_______________________________________________<br>
NumPy-Discussion mailing list<br>
<a href="mailto:NumPy-Discussion@scipy.org">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><br clear="all"><br>-- <br>Josh Hykes<br>NCSU grad student<br>(717) 742-0264<br><a href="mailto:jmhykes@ncsu.edu" target="_blank">jmhykes@ncsu.edu</a> or <a href="mailto:jhykes@gmail.com" target="_blank">jhykes@gmail.com</a><br>


</div>