Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何强制genfromtxt读取csv作为记录数组?_Python_Csv_Numpy_Genfromtxt - Fatal编程技术网

Python 如何强制genfromtxt读取csv作为记录数组?

Python 如何强制genfromtxt读取csv作为记录数组?,python,csv,numpy,genfromtxt,Python,Csv,Numpy,Genfromtxt,我试图通过以下行读取CSV: raw_data = genfromtxt(datafile,delimiter='\t',dtype=None) 好的,当这个文件遇到数据文件中的字符串数据时,这个函数将它读入记录数组。据我所知,当dtype为None时,文件也应该读入记录数组。对吗 但是,如果没有字符串数据,只显示数字数据,则此函数会将数据读入ndarray 如果否,是否有一种方便的方法强制此函数将文件作为记录数组读取 ndarray的问题是,我所有的代码都是为了处理记录数组而构建的 UPD1

我试图通过以下行读取CSV:

raw_data = genfromtxt(datafile,delimiter='\t',dtype=None)
好的,当这个文件遇到数据文件中的字符串数据时,这个函数将它读入记录数组。据我所知,当dtype为None时,文件也应该读入记录数组。对吗

但是,如果没有字符串数据,只显示数字数据,则此函数会将数据读入ndarray

如果否,是否有一种方便的方法强制此函数将文件作为记录数组读取

ndarray的问题是,我所有的代码都是为了处理记录数组而构建的

UPD1 为了防止有人尝试这样做,这里有一个简单的解决方案。这可能不是最好的,但至少它是有效的:

从csv中读取文件作为数据阵列
raw\u data=genfromtxt(数据文件,分隔符='\t',dtype=None)

为列生成默认名称和数据类型:

names_=['f'+str(i) for i in range(raw_data.shape[1])];
names=[(name,raw_data.dtype) for name in names_];
最后,要创建记录数组:

raw_data_as_ra = raw_data.ravel().view(names);

您可以使用
recfromcsv
,即:

如果您的文件看起来像:

col1,col2,col3
1.1, 2.4, 3.2
4.1, 5.2, 6.3
那就这样做吧

a = np.recfromcsv('yourfile.csv')
给出:

rec.array([(1.1, 2.4, 3.2), (4.1, 5.2, 6.3)], 
      dtype=[('col1', '<f8'), ('col2', '<f8'), ('col3', '<f8')])

也许只需指定所需的数据类型?每次我读取不同的CSV文件时,我可能会有数千列,但我不确定文件中会遇到哪些数据。ndarray到底有什么问题?它是否将整数转换为浮点数?或者我遗漏了更大的内容?抱歉,我忘了提及我对该文件的所有进一步分析都是围绕记录数组进行的,以便在不只是显示数字数据的情况下捕获一般情况。也许值得显示在处理代码中不起作用的内容。谢谢!我差点忘了这个函数。希望此函数能够读取没有名称的csv。再次感谢!
np.recfromcsv(datafile,delimiter='\t'))