我只想在带有评估的文本文件中仅加载最后几列。

我将numpy.genfromtxt与参数converters = {-1:func,-2:func}一起使用

但这是行不通的。另一方面,如果我使用转换器= {56:func,57:func}这样的前向索引,则可以正常工作。

为什么转换器参数不支持python的向后索引?
如果我只知道最后一个列的索引,是否有办法做到这一点?

最佳答案

使用numpy.loadtxt可以正常工作,并且可以使用converters参数定义函数。 tmp.txt文件包含:

11,12,13,14,15,16,17,18,19
21,22,23,24,25,26,27,28,29
31,32,33,34,35,36,37,38,39
41,42,43,44,45,46,47,48,49
51,52,53,54,55,56,57,58,59


您可以使用加载选定的列(也可以选择要堆叠的顺序):

import numpy as np
print np.loadtxt('tmp.txt',delimiter=',',usecols=(-2,-1))
#[[ 18.  19.]
# [ 28.  29.]
# [ 38.  39.]
# [ 48.  49.]
# [ 58.  59.]]
print np.loadtxt('tmp.txt',delimiter=',',usecols=(-1,-2),converters={-1: lambda x: float(x)+100})
#[[ 119.   18.]
# [ 129.   28.]
# [ 139.   38.]
# [ 149.   48.]
# [ 159.   58.]]

10-07 17:50