NumPy:从字符串列表加载数据的异类列
||
我正在处理存储在ASCII文件中的数组数据(类似于此线程)。我的文件至少有2M行(158 MB),并分为具有不同模式的多个部分。在读取格式的模块中,我想通过ѭ0读取整个文件,因此我可以索引每个节的位置,然后将需要的每个节读入NumPy数据结构。
例如,一节的摘录是:
>>> print lines[5:10]
[\' 1 0.1000 0.300E-03 0.000E+00 0.300E-03 0.000E+00 0.000E+00 0.300E-03 0.100E-03\\n\',
\' 2 0.1000 0.120E-02 0.000E+00 0.120E-02 0.000E+00 0.000E+00 0.120E-02 0.100E-03\\n\',
\' 3 0.1000 0.100E-02 0.000E+00 0.100E-02 0.000E+00 0.000E+00 0.100E-02 0.100E-03\\n\',
\' 4 0.1000 0.110E-02 0.000E+00 0.110E-02 0.000E+00 0.000E+00 0.110E-02 0.100E-03\\n\',
\' 5 0.1000 0.700E-03 0.000E+00 0.700E-03 0.000E+00 0.000E+00 0.700E-03 0.100E-03\\n\']
具有模式“ 2”,后面的部分将具有更简单的“ 3”模式:
>>> print lines[20:25]
[\' 1 0.00000E+00\\n\',
\' 2 0.43927E-07\\n\',
\' 3 0.44006E-07\\n\',
\' 4 0.44020E-07\\n\',
\' 5 0.44039E-07\\n\']
如何使用NumPy快速加载行的不同部分?我看到有np.loadtxt
,但它需要一个文件句柄,并一直读取到最后。我也看到了np.from*
函数,但是我不确定如何在已经阅读过的lines
中使用它们。我需要两次读取文件吗?
关于异构数据类型,我想我可以使用化合物dtype
,例如np.dtype([(\'col1\', \'<i2\'), (\'col2\', \'f4\'), (\'col3\', \'f4\'), (\'col4\', \'f4\'), (\'col5\', \'f4\'), (\'col6\', \'f4\'), (\'col7\', \'f4\'), (\'col8\', \'f4\'), (\'col9\', \'f4\')])
,对吗?
没有找到相关结果
已邀请:
1 个回复
肺鬼耙扮群
可以从字符串中创建文件类型的对象。所以你可以做
甚至更简单,只需