我正在尝试编写一个通用脚本,其中一部分导入以逗号分隔或以空格分隔的文件.我希望脚本识别任何一种类型.有没有办法指定类似的东西
arrayobj = np.genfromtxt(file.txt, delimiter=(',' OR '\t'), names=None, dtype=None)
Run Code Online (Sandbox Code Playgroud)
我尝试使用正则表达式(',|\t'),但这也不起作用.
我是nympy的新手,我正在尝试使用以下代码将tab(\ t)分隔的文本文件读入numpy数组矩阵:
train_data = np.genfromtxt('training.txt', dtype=None, delimiter='\t')
Run Code Online (Sandbox Code Playgroud)
文件内容:
38 Private 215646 HS-grad 9 Divorced Handlers-cleaners Not-in-family White Male 0 0 40 United-States <=50K
53 Private 234721 11th 7 Married-civ-spouse Handlers-cleaners Husband Black Male 0 0 40 United-States <=50K
30 State-gov 141297 Bachelors 13 Married-civ-spouse Prof-specialty Husband Asian-Pac-Islander Male 0 0 40 India >50K
Run Code Online (Sandbox Code Playgroud)
我期待的是形状的二维阵列矩阵(3,15)
但是我的上面的代码我只得到一个单行数组(3,)
我不确定为什么每行的15个字段都没有分配一列.
我也尝试使用numpy的loadtxt(),但是它无法处理我的数据的类型转换,即使我给了dtype = None,它试图将字符串转换为默认浮点类型并且失败了.
试过的代码:
train_data = np.loadtxt('try.txt', dtype=None, delimiter='\t')
Error:
ValueError: could not convert string to float: State-gov
Run Code Online (Sandbox Code Playgroud)
有什么指针吗?
谢谢
我有数百个像这样的文本文件,每列用三个空格分隔.数据为一年:每月12个月和31天.
下面,我只是在下面显示与问题相关的内容:
001 DIST - ADILABAD ANDHRA MEAN TEMP
DATE JAN FEB MAR . . . . NOV DEC
01 21.5 24.3 27.1 25.8 22.4
02 21.4 24.2 27.1 25.8 22.4
. . . . . .
. . . . . .
. . . . . .
27 23.6 26.8 30.3 23.1 21.3
28 23.8 27.0 30.6 22.9 21.3
29 23.4 31.0 22.9 21.2
30 23.5 31.1 22.6 21.4
31 23.8 31.2 . . . . 21.6
Run Code Online (Sandbox Code Playgroud)
我想将每列读入一个数组,然后对其进行平均. …
我有一个看起来像这样的csv文件(实际文件有更多的列和行):
1,2,3,4,5
6,7,8,9,10
11,12,13,14,15
16
Run Code Online (Sandbox Code Playgroud)
假设该文件的名称是info.csv 如果我尝试使用导入它
data = numpy.genfromtxt('info.csv', delimiter = ',')
Run Code Online (Sandbox Code Playgroud)
然后我收到以下错误:
ValueError: Some errors were detected ! Line #4 (got 1 columns instead of 5)
Run Code Online (Sandbox Code Playgroud)
如果我用,
data = numpy.genfromtxt('info.csv', delimiter = ',', skip_footer = 1)
Run Code Online (Sandbox Code Playgroud)
将跳过包含数据16和数据的两行11, 12, 13, 14, 15.我不明白为什么11, 12, 13, 14, 15跳过这一行.我将非常感谢有关如何genfromtxt在上述文件中正确导入前三行的任何帮助.
谢谢
在以前的程序中,我从这样的 csv 文件中读取数据:
AllData = np.genfromtxt(open("PSECSkew.csv", "rb"),
delimiter=',',
dtype=[('CalibrationDate', datetime),('Expiry', datetime), ('B0', float), ('B1', float), ('B2', float), ('ATMAdjustment', float)],
converters={0: ConvertToDate, 1: ConvertToDate})
Run Code Online (Sandbox Code Playgroud)
我现在正在编写一个非常相似的程序,但这次我想获得一个非常相似的数据结构AllData(除了这次浮点数将全部在一个 csv 字符串中)但是来自 SQL Server 而不是一个 csv 文件。最好的方法是什么?
pyodbc看起来涉及使用很多我不熟悉并希望避免的游标。我只想运行查询并以上述结构(或像 C# 中的 DataTable)获取数据。
我正在尝试使用genfromtxtPython3来读取包含字符串和数字的简单csv文件.例如,类似于(以下称为"test.csv"):
1,a
2,b
3,c
Run Code Online (Sandbox Code Playgroud)
使用Python2,以下工作正常:
import numpy
data=numpy.genfromtxt("test.csv", delimiter=",", dtype=None)
# Now data is something like [(1, 'a') (2, 'b') (3, 'c')]
Run Code Online (Sandbox Code Playgroud)
在Python3中,相同的代码返回[(1, b'a') (2, b'b') (3, b'c')].由于Python3读取文件的方式不同,这在某种程度上是预期的.因此我使用转换器来解码字符串:
decodef = lambda x: x.decode("utf-8")
data=numpy.genfromtxt("test.csv", delimiter=",", dtype="f8,S8", converters={1: decodef})
Run Code Online (Sandbox Code Playgroud)
这适用于Python2,但不适用于Python3(相同的[(1, b'a') (2, b'b') (3, b'c')]输出.但是,如果在Python3中我使用上面的代码只读一列:
data=numpy.genfromtxt("test.csv", delimiter=",", usecols=(1,), dtype="S8", converters={1: decodef})
Run Code Online (Sandbox Code Playgroud)
输出字符串['a' 'b' 'c']已按预期解码.
我也试着提供文件的输出open与'rb'模式,如建议在这个环节,但目前还没有改进.
为什么只读取一列时转换器工作,而不读取两列时?你能否告诉我genfromtxt在Python3中使用的正确方法?难道我做错了什么?先感谢您!
我有下表:
2M00251602+5422547 7.180 9.000 2.200
#2M00255540+5749320 4.420 5.200 1.600
2M00274401+5330504 4.400 6.800 2.700
2M00331747+6327504 4.540 5.900 0.400
#2M00333033+7054422 4.350 6.700 0.700
2M00350487+5953079 5.310 7.400 1.100
Run Code Online (Sandbox Code Playgroud)
我想跳过带有#标签的行.怎么请genfromtxt跳过有标签符号的行?
注意:标签不需要在那里.我只需要跳过用户指定的行.
我知道在READLOL下的IDL中,可以做SKIPSTRING ='#'.genfromtxt中有类似的东西吗?如果没有,我可以用什么程序/包来读取这样的表并跳过用户指定的行?
提前致谢!
我正在尝试加载一个仅由float类型组成的csv文件.
data = np.genfromtxt(self.file,dtype=float,delimiter=self.delimiter,names = True)
Run Code Online (Sandbox Code Playgroud)
但是这会返回一个元组数组.根据我的搜索,这应该只返回非同构数组的元组.numpy.genfromtxt产生的元组看起来像元组,而不是2D数组 - 为什么?.当我删除它时names=True,它确实返回一个二维数组.是否可以返回一个名称在链接中的数组?
来自csv的行:
0 _id|1 age|2 unkown|3 male|4 female|5 match-start|6 score
8645632250|7744|0|1|0|1|10
Run Code Online (Sandbox Code Playgroud)
(还有更多专栏,我刚写了前六篇.)
我还使用此代码获得更好的列名称:
def obtain_data(self):
with open(self.file, 'r') as infile:
first_line = infile.readline()
labels = first_line.split('|')
labels = list(map(trunc_before,labels))
data = np.genfromtxt(self.file,dtype=float,delimiter=self.delimiter,names = labels,skip_header=1)
return data, np.asarray(labels)
Run Code Online (Sandbox Code Playgroud) 考虑一个文件a.dat,包含内容:
address 1, address 2, address 3, num1, num2, num3
address 1, address 2, address 3, 1.0, 2.0, 3
address 1, address 2, "address 3, address4", 1.0, 2.0, 3
Run Code Online (Sandbox Code Playgroud)
我正在尝试导入numpy.genfromtxt.但是,该函数在第3行中看到了一个额外的列.我得到了类似的错误pandas.read_csv:
np.genfromtxt('a.dat',delimiter=',',dtype=None,skiprows=1)
ValueError: Some errors were detected !
Line #3 (got 7 columns instead of 6)
Run Code Online (Sandbox Code Playgroud)
和
pandas read_csv sort of works - but it gives me an unaligned data structure:
pd.read_csv('a.dat')
pandas.parser.CParserError: Error tokenizing data. C error: Expected 6 fields in line 3, saw …Run Code Online (Sandbox Code Playgroud) 我有一个txt文件,格式如下(简化):
date this that other
2007-05-25 11:00:00 10 20 30
2007-05-25 11:10:00 15 18 30
2007-05-25 11:20:00 10 27 30
2007-05-25 11:30:00 20 35 30
2007-05-25 11:50:00 30 20
2007-05-25 12:00:00 30 13
2007-05-25 12:10:00 30 13
Run Code Online (Sandbox Code Playgroud)
第一个原始字符串定义了它们上面的列.第一列显然是时间.还可以观察到缺少某些值.我不想删除某些值丢失的行.由于我想稍后使用该数据进行一些计算,我想使用numpy通过使用numpy.loadtxt以下方法导入该数据:
data = numpy.loadtxt('data.txt')
Run Code Online (Sandbox Code Playgroud)
它ValueError: could not convert string to float: b'date'由于第一个原始产生错误.使用:
data = numpy.genfromtxt('data.txt')
Run Code Online (Sandbox Code Playgroud)
Line #51028 (got 38 columns instead of 37)为许多行提供错误,这是因为缺少某些值.我该怎么办?
genfromtxt ×10
numpy ×10
python ×7
python-2.7 ×2
delimiter ×1
file-io ×1
pandas ×1
python-3.x ×1