<p>您的样品和<code>dtype</code>:</p>
<pre><code>In [1]: np.genfromtxt('stack55810419.txt', dtype=(object, object, int,float,floa
...: t))
Out[1]:
array([(b'HIP893', b'23_10', 7, 0.028 , 4.),
(b'HIP1074', b'43_20', 20, 0.0141 , 1.),
(b'HIP1325', b'23_10', 7, 0.02388, 5.)],
dtype=[('f0', 'O'), ('f1', 'O'), ('f2', '<i8'), ('f3', '<f8'), ('f4', '<f8')])
</code></pre>
<p>使用<code>dtype=None</code>(和<code>encoding=None</code>):</p>
^{pr2}$
<p>指定unicode数据类型(必须包括大小):</p>
<pre><code>In [6]: np.genfromtxt('stack55810419.txt', dtype=('U7', 'U7', int,float,float))
Out[6]:
array([('HIP893', '23_10', 7, 0.028 , 4.),
('HIP1074', '43_20', 20, 0.0141 , 1.),
('HIP1325', '23_10', 7, 0.02388, 5.)],
dtype=[('f0', '<U7'), ('f1', '<U7'), ('f2', '<i8'), ('f3', '<f8'), ('f4', '<f8')])
</code></pre>
<p>我很困惑为什么<code>None</code>为第二列选择一个整型数据类型(下划线应该可以阻止这一点)。在</p>
<p>不带encoding参数的<code>dtype=None</code>将引发此警告:</p>
<blockquote>
<p>/usr/local/bin/ipython3:1: VisibleDeprecationWarning: Reading unicode strings without specifying the encoding argument is deprecated. Set the encoding, use None for the system default.</p>
</blockquote>
<p>在Py2中,默认的字符串类型是bytestrings;在py3unicode中。<code>genfromtxt</code>与py2兼容使用了<code>bytestrings</code>。但是最近的版本增加了<code>encoding</code>参数。但这种转变似乎仍有一些粗糙的边缘。在</p>
<hr/>
<p>这可能就是我得到<code>i8</code>;Python自己的<code>int</code>接受下划线的原因。在</p>
<pre><code>In [20]: int('23_10')
Out[20]: 2310
</code></pre>