【发布时间】:2018-08-28 19:14:55
【问题描述】:
我有一个.csv 文件,其中包含字符串和整数 - 包含列。我需要使用numpy.loadtxt 方法来导入由指定列形成的矩阵。我怎样才能做到这一点?现在我正在尝试执行以下操作:
data = np.loadtxt(open(path_to_data, "rb"), delimiter=",", skiprows=1, usecols=[1:])
基本上尝试读取所有列,但首先,但它给出了错误:
SyntaxError: 无效语法
因为不允许这样的语法:usecols=[1:]
【问题讨论】:
-
请放一些虚拟样本数据并使用pandas读取数据文件
-
“我需要使用
numpy.loadtxt”——不,你不需要。还有更厉害的numpy.genfromtxt。 -
@heltonbiker,
genfromtxt需要相同类型的usecols输入。 -
[1:]仅允许在索引上下文中使用。它不是range表达式。使用np.arange(1,10)或您需要多少列。基本上usecols需要一个列号列表。没有all-but-the-first快捷方式。 -
loadtxt和genfromtxt都使用默认的 float dtyype 加载。但是genfromtxt将nan放在它无法将字符串转换为浮点数的地方,而loadtxt会引发错误。因此,您可以加载所有列,然后进行data[:,1:]提取。