<p>读取文件的第一步可以通过<code>genfromtxt</code>轻松完成。这会逐行读取文件,将其拆分(就像您所做的那样),将结果收集到列表列表中,并在最后生成数组<code>pandas.read_csv</code>更快,至少在使用<code>c</code>模式时是这样,对于大文件,可能值得一试</p>
<p>生成保留第一列整数性质的结构化数组。通过字段名访问“columns”(如数据类型中所指定):</p>
<pre><code>In [30]: data = np.genfromtxt('stack69665939.py',skip_header=9, dtype=None)
In [31]: data
Out[31]:
array([(2354, 18.8358 , -21.02 , -70.5731, -21041.8 , -3738.18, -2520.84),
(1708, 5.54312, -8.1526, -62.6984, 4362.84, -30610.2 , -4065.84)],
dtype=[('f0', '<i8'), ('f1', '<f8'), ('f2', '<f8'), ('f3', '<f8'), ('f4', '<f8'), ('f5', '<f8'), ('f6', '<f8')])
</code></pre>
<p>或以浮点形式加载所有值,生成(N,7)2d数组:</p>
<pre><code>In [32]: data = np.genfromtxt('stack69665939.py',skip_header=9)
In [33]: data
Out[33]:
array([[ 2.35400e+03, 1.88358e+01, -2.10200e+01, -7.05731e+01,
-2.10418e+04, -3.73818e+03, -2.52084e+03],
[ 1.70800e+03, 5.54312e+00, -8.15260e+00, -6.26984e+01,
4.36284e+03, -3.06102e+04, -4.06584e+03]])
</code></pre>
<p>将<code>usecols</code>指定为<code>[3,4,5,6]</code>可能会节省一些时间。您似乎只是对以下数据感兴趣:</p>
<pre><code>In [35]: z = data[:,3]
In [36]: pxyz = data[:,[4,5,6]]
In [37]: z
Out[37]: array([-70.5731, -62.6984])
In [38]: pxyz
Out[38]:
array([[-21041.8 , -3738.18, -2520.84],
[ 4362.84, -30610.2 , -4065.84]])
</code></pre>
<p>然后,您似乎对<code>z</code>执行了一些操作来派生一个<code>loc</code>,并使用它来组合“pxyz”数组的“行”。我不想再重复了</p>
<p>无论如何,通常在处理大型<code>csv</code>文件时,我们一步读取,然后稍后处理生成的数组或数据帧。阅读时进行处理是可能的,但通常不值得付出努力</p>