Hi Derek!<br><br>I tried with the lastest version of python(x,y) package with numpy version of 1.6.0. I gave the data to you with reduced columns (10 column) and rows.<br><br>b=np.genfromtxt(&#39;99Burn2003all_new.csv&#39;,delimiter=&#39;;&#39;,names=True,usecols=tuple(range(10)),dtype=[&#39;S10&#39;] + [ float for n in range(9)]) works.<br>
if you change  usecols=tuple(range(10))  to usecols=range(10), it still works.<br><br>b=np.genfromtxt(&#39;99Burn2003all_new.csv&#39;,delimiter=&#39;;&#39;,names=True,dtype=None) works.<br><br>but b=np.genfromtxt(&#39;99Burn2003all_new.csv&#39;,delimiter=&#39;;&#39;,names=True,dtype=[&#39;S10&#39;]
 + [ float for n in range(9)]) didn&#39;t work. <br><br>I use Python(x,y)-2.6.6.1 with numpy version as 1.6.0, I use windows 32-bit system.<br><br>Please don&#39;t spend too much time on this if it&#39;s not a potential problem.<br>
<br>the final thing is, when I try to do this (I want to try the missing_values in numpy 1.6.0), it gives error:  <br><br>In [33]: import StringIO as StringIO<br><br>In [34]: data = &quot;1, 2, 3\n4, 5, 6&quot;<br><br>In [35]: np.genfromtxt(StringIO(data), delimiter=&quot;,&quot;,dtype=&quot;int,int,int&quot;,missing_values=2)<br>
---------------------------------------------------------------------------<br>TypeError                                 Traceback (most recent call last)<br><br>D:\data\LaThuile_ancillary\Jim_Randerson_data\&lt;ipython console&gt; in &lt;module&gt;()<br>
<br>TypeError: &#39;module&#39; object is not callable<br><br><br>I think it must be some problem of my own python configuration?<br><br><br>Much thanks again,<br><br>cheers,<br><br>Chao<br><br><div class="gmail_quote">2011/6/27 Derek Homeier <span dir="ltr">&lt;<a href="mailto:derek@astro.physik.uni-goettingen.de">derek@astro.physik.uni-goettingen.de</a>&gt;</span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Hi Chao,<br>
<br>
this seems to have become quite a number of different issues!<br>
But let&#39;s make sure I understand what&#39;s going on...<br>
<div class="im"><br>
&gt; Thanks very much for your quick reply. I make a short summary of what I&#39;ve tried. Actually the [&#39;S10&#39;] + [ float for n in range(48) ] only works when you explicitly specify the columns to be read, and genfromtxt cannot automatically determine the type if you don&#39;t specify the type....<br>

&gt;<br>
<br>
</div><div class="im">&gt; In [164]: b=np.genfromtxt(&#39;99Burn2003all.csv&#39;,delimiter=&#39;;&#39;,names=True,usecols=tuple(range(49)),dtype=[&#39;S10&#39;] + [ float for n in range(48)])<br>
</div>...<br>
<div class="im">&gt; But if I use the following, it gives error:<br>
&gt;<br>
&gt; In [171]: b=np.genfromtxt(&#39;99Burn2003all.csv&#39;,delimiter=&#39;;&#39;,names=True,dtype=[&#39;S<br>
&gt; 10&#39;] + [ float for n in range(48)])<br>
&gt; ---------------------------------------------------------------------------<br>
&gt; ValueError                                Traceback (most recent call last)<br>
&gt;<br>
</div>And the above (without the usecols) did work if you explicitly typed dtype=(&#39;S10&#39;, float, float....)? That by itself would be quite weird, because the two should be completely equivalent.<br>
What happens if you cast the generated list to a tuple - dtype=tuple([&#39;S10&#39;] + [ float for n in range(48)])?<br>
If you are using a recent numpy version (1.6.0 or 1.6.1rc1), could you please file a bug report with complete machine info etc.? But I suspect this might be an older version, you should also be able to simply use &#39;usecols=range(49)&#39; (without the tuple()). Either way, I cannot reproduce this behaviour with the current numpy version.<br>

<div class="im"><br>
&gt; If I don&#39;t specify the dtype, it will not recognize the type of the first column (it displays as nan):<br>
&gt;<br>
&gt; In [172]: b=np.genfromtxt(&#39;99Burn2003all.csv&#39;,delimiter=&#39;;&#39;,names=True,usecols=(0,1,2))<br>
&gt;<br>
&gt; In [173]: b<br>
&gt; Out[173]:<br>
&gt; array([(nan, -999.0, -1.028), (nan, -999.0, -0.40899999999999997),<br>
&gt;        (nan, -999.0, 0.16700000000000001), ..., (nan, -999.0, -999.0),<br>
&gt;        (nan, -999.0, -999.0), (nan, -999.0, -999.0)],<br>
&gt;       dtype=[(&#39;TIMESTAMP&#39;, &#39;&lt;f8&#39;), (&#39;CO2_flux&#39;, &#39;&lt;f8&#39;), (&#39;Net_radiation&#39;, &#39;&lt;f8&#39;)<br>
&gt; ])<br>
&gt;<br>
</div>You _do_ have to specify &#39;dtype=None&#39;, since the default is &#39;dtype=float&#39;, as I have remarked in my previous mail. If this does not work, it could be a matter of the numpy version gain - there were a number of type conversion issues fixed between 1.5.1 and 1.6.0.<br>

<div class="im">&gt;<br>
&gt; Then the final question is, actually the &#39;-999.0&#39; in the data is missing value, but I cannot display it as &#39;nan&#39; by specifying the missing_values as &#39;-999.0&#39;:<br>
&gt; but either I set the missing_values as -999.0 or using a dictionary, it neither work...<br>
</div>...<br>
<div class="im">&gt;<br>
&gt; Even this doesn&#39;t work (suppose 2 is our missing_value),<br>
&gt; In [184]: data = &quot;1, 2, 3\n4, 5, 6&quot;<br>
&gt;<br>
&gt; In [185]: np.genfromtxt(StringIO(data), delimiter=&quot;,&quot;,dtype=&quot;int,int,int&quot;,missin<br>
&gt; g_values=2)<br>
&gt; Out[185]:<br>
&gt; array([(1, 2, 3), (4, 5, 6)],<br>
&gt;       dtype=[(&#39;f0&#39;, &#39;&lt;i4&#39;), (&#39;f1&#39;, &#39;&lt;i4&#39;), (&#39;f2&#39;, &#39;&lt;i4&#39;)])<br>
<br>
</div>OK, same behaviour here - I found the only tests involving &#39;valid numbers&#39; as missing_values use masked arrays; for regular ndarrays they seem to be ignored. I don&#39;t know if this is by design - the question is, what do you need to do with the data if you know &#39; -999&#39; always means a missing value? You could certainly manipulate them after reading in...<br>

If you have to convert them already on reading in, and using np.mafromtxt is not an option, your best bet may be to define a custom converter like (note you have to include any blanks, if present)<br>
<br>
conv = dict(((n, lambda s: s==&#39; -999&#39; and np.nan or float(s)) for n in range(1,49)))<br>
<br>
Cheers,<br>
<font color="#888888">                                                Derek<br>
<br>
</font></blockquote></div><br><br clear="all"><br>-- <br><div>***********************************************************************************</div>
<div>Chao YUE<br>Laboratoire des Sciences du Climat et de l&#39;Environnement (LSCE-IPSL)<br>UMR 1572 CEA-CNRS-UVSQ<br>Batiment 712 - Pe 119<br>91191 GIF Sur YVETTE Cedex</div>
<div>Tel: (33) 01 69 08 77 30; Fax:01.69.08.77.16<br></div>

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