Howdy,<br><br><div><span class="gmail_quote">On 2/17/06, <b class="gmail_sendername">Brian Blais</b> &lt;<a href="mailto:bblais@bryant.edu">bblais@bryant.edu</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Colin J. Williams wrote:<br>&gt; Brian Blais wrote:<br>&gt;&gt; In my attempt to learn python, migrating from matlab, I have the<br>&gt;&gt; following problem. Here is what I want to do, (with the wrong syntax):<br>&gt;&gt;
<br>&gt;&gt; from numpy import *<br>&gt;&gt;<br>&gt;&gt; t=arange(0,20,.1)<br>&gt;&gt; x=zeros(len(t),'f')</blockquote><div><br>This was the line causing the type error.&nbsp; t is type double (float64).&nbsp; 'f' makes x be type float32.&nbsp; That causes the assignment below to fail.&nbsp; Replacing that line with
<br><br>&nbsp;&nbsp;&nbsp;&nbsp; x=zeros(len(t),'d')<br>
<br>should work.&nbsp; Or the zeros_like() that Travis suggested.<br><br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">&gt;&gt;<br>&gt;&gt; idx=(t&gt;5)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# &lt;---this produces a Boolean array, probably not what you want.
<br>&gt;&gt; tau=5<br>&gt;&gt; x[idx]=exp(-t[idx]/tau)&nbsp;&nbsp;# &lt;---this line is wrong (gives a TypeError)<br>&gt;&gt;</blockquote><div><br><br>You could also use <br>&nbsp;&nbsp; idx=where(t&gt;5)<br>In place of <br>&nbsp;&nbsp; idx=(t&gt;5)<br>
<br>Although in this case it probably doesn't make much difference, where(expr) is more directly equivalent to matlab's find(expr).<br><br>See <a href="http://www.scipy.org/Wiki/NumPy_for_Matlab_Users">http://www.scipy.org/Wiki/NumPy_for_Matlab_Users
</a> for more Matlab equivalents.&nbsp; And consider contributing your own, if you have some good ones that aren't there already.<br><br>--bb<br></div><br></div>