<p><strong>使用列名读取数据</strong></p>
<p>若要使用<code>np.genfromtext</code>,应首先将文件读入字符串,删除所有<code>"</code>字符,然后使用<code>cStringIO</code>读取此字符串:</p>
<pre><code>>>>import cStringIO
>>>with open ("123", "r") as myfile:
data=myfile.read().replace('"', '')
>>>np.genfromtxt(cStringIO.StringIO(data), skip_header=1, delimiter=",", names = True)
array([(7.0, 0.0, 1.0, 3.0, 1.0),
(8.0, 4.0, 3.0, 1.0, 1.0),
(8.0, 5.0, 3.0, 3.0, 1.0),
(8.0, 6.0, 3.0, 3.0, 3.0)],
dtype=[('var1', '<f8'), ('var2', '<f8'), ('var3', '<f8'), ('var4', '<f8'), ('var5', '<f8')])
</code></pre>
<p>您也可以使用<code>pandas</code>:</p>
<pre><code>>>>pd.read_csv(file, header=0, skiprows = 1).as_matrix()
var1 var2 var3 var4 var5
0 7 0 1 3 1
1 8 4 3 1 1
2 8 5 3 3 1
3 8 6 3 3 3
</code></pre>
<p><strong>在没有列名的情况下读取数据</strong></p>
<p>您可以首先将文件读取到包含字符串的数组中:</p>
<pre><code>a = np.genfromtxt('filename', skip_header=2, delimiter=",", dtype = 'str')
print a
</code></pre>
<p>它给出:</p>
<pre><code>[['"7"' '"0"' '"1"' '"3"' '"1"']
['"8"' '"4"' '"3"' '"1"' '"1"']
['"8"' '"5"' '"3"' '"3"' '"1"']
['"8"' '"6"' '"3"' '"3"' '"3"']]
</code></pre>
<p>然后使用如下numpy将其转换为float:</p>
<pre><code>a = np.char.strip(a, '"').astype(float)
print a
</code></pre>
<p>它给予</p>
<pre><code>[[ 7. 0. 1. 3. 1.]
[ 8. 4. 3. 1. 1.]
[ 8. 5. 3. 3. 1.]
[ 8. 6. 3. 3. 3.]]
</code></pre>
<p>你还建议使用熊猫。要在pandas数据框中读取它,可以执行以下操作:</p>
<pre><code>import pandas as pd
a = pd.read_csv('./test', header=None, skiprows = 2)
print a
</code></pre>
<p>它给出:</p>
<pre><code> 0 1 2 3 4
0 7 0 1 3 1
1 8 4 3 1 1
2 8 5 3 3 1
3 8 6 3 3 3
</code></pre>