【发布时间】:2021-04-23 22:43:42
【问题描述】:
我是 python 新手,正在尝试从文件加载数据。 我的文件如下所示:
TION 13168375
NTHE 11234972
THER 10218035
THAT 8980536
OFTH 8132597
FTHE 8100836
THES 7717675
WITH 7627991
我想将两列提取到单独的数组中。 到目前为止我尝试的是:
import numpy as np
s=open("Equadgrams.txt", "r")
data = np.genfromtxt(s, dtype=[('mystring','S4'),('myint','i8')])
在 loadtxt 命令的文档中,看起来我可以将结果拆分为单独的数组,但这给了我错误。
x,y = np.loadtxt(s, dtype=[('mystring','S4'),('myint','i8')])
Traceback (most recent call last):
File "<input>", line 3, in <module>
ValueError: too many values to unpack (expected 2)
我注意到的另一件事:
数据数组中的整数似乎没问题,但未按预期读取字符串。
我得到第一个条目: b'TION' 类型为 class
我希望有人能帮我解决我的问题。
【问题讨论】:
-
在
genfromtxt中使用U4' instead of 'S4' (default unicode versus bytestring).data['mystring']` 和data['myint']应该会给你想要的数组。 -
loadtxt应该像genfromtxt一样提供一维、二字段数组。显然,您不能unpack在第一个大维度上将其分成 2 个变量。loadtxt有一个“解包”参数,但我不确定它是否适用于结构化 dtype(它只是“转置”输出)。