标签: genfromtxt

numpy.genfromtxt:不明确的分隔符?

我正在尝试编写一个通用脚本,其中一部分导入以逗号分隔或以空格分隔的文件.我希望脚本识别任何一种类型.有没有办法指定类似的东西

arrayobj = np.genfromtxt(file.txt, delimiter=(',' OR '\t'), names=None, dtype=None)
Run Code Online (Sandbox Code Playgroud)

我尝试使用正则表达式(',|\t'),但这也不起作用.

python numpy delimiter genfromtxt

7
推荐指数
1
解决办法
1640
查看次数

无法将制表符分隔文件读入numpy 2-D数组

我是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)

有什么指针吗?

谢谢

numpy python-2.7 genfromtxt

6
推荐指数
1
解决办法
1万
查看次数

如何使用genfromtxt()从NumPy中的文本文件中读取不同长度的列?

我有数百个像这样的文本文件,每列用三个空格分隔.数据为一年:每月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)

我想将每列读入一个数组,然后对其进行平均. …

python numpy genfromtxt

6
推荐指数
1
解决办法
4035
查看次数

使用genfromtxt导入numpy中缺少值的csv数据

我有一个看起来像这样的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在上述文件中正确导入前三行的任何帮助.

谢谢

python numpy genfromtxt

5
推荐指数
1
解决办法
1万
查看次数

查询 numpy 的 SQL 服务器的最佳方法

在以前的程序中,我从这样的 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)获取数据。

numpy sql-server-2008 python-2.7 genfromtxt

5
推荐指数
1
解决办法
1万
查看次数

Python3中的numpy genfromtxt问题

我正在尝试使用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中使用的正确方法?难道我做错了什么?先感谢您!

python numpy python-3.x genfromtxt

4
推荐指数
1
解决办法
6872
查看次数

跳过genfromtxt中的行

我有下表:

 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中有类似的东西吗?如果没有,我可以用什么程序/包来读取这样的表并跳过用户指定的行?

提前致谢!

numpy genfromtxt

4
推荐指数
1
解决办法
827
查看次数

numpy.genfromtxt似乎忽略了dtype

我正在尝试加载一个仅由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)

python numpy genfromtxt

4
推荐指数
1
解决办法
412
查看次数

numpy genfromtxt/pandas read_csv; 忽略引号内的逗号

考虑一个文件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)

python file-io numpy pandas genfromtxt

4
推荐指数
1
解决办法
5450
查看次数

这是在python中打开"复杂"txt文件的好方法

我有一个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)为许多行提供错误,这是因为缺少某些值.我该怎么办?

python numpy genfromtxt

4
推荐指数
1
解决办法
174
查看次数