String NumPy-使用genfromtxt从文件中解包具有不同数据类型的数据

String NumPy-使用genfromtxt从文件中解包具有不同数据类型的数据,string,csv,numpy,io,String,Csv,Numpy,Io,我试图读取一个文件,其中第一列是日期字符串,第2-4列是常规浮点数。如果我这样做 data = np.genfromtxt("infile.csv", delimiter=','), 我在文件中得到一个4x行的数组,其中第1列中的所有值都是(非常正确的)NaN。所以我试着把我的约会当成一根绳子 data = np.genfromtxt("infile.csv", delimiter=',', dtype=("|S20",float,float,float)) 结果是一个一维数组,每行的所有四

我试图读取一个文件,其中第一列是日期字符串,第2-4列是常规浮点数。如果我这样做

data = np.genfromtxt("infile.csv", delimiter=','),
我在文件中得到一个4x行的数组,其中第1列中的所有值都是(非常正确的)NaN。所以我试着把我的约会当成一根绳子

data = np.genfromtxt("infile.csv", delimiter=',', dtype=("|S20",float,float,float))
结果是一个一维数组,每行的所有四列现在都作为数组的一个元素


有人能解释一下我做错了什么吗?

有更好的方法可以做到这一点,但因为我们不知道您打算如何快速处理日期字符串(写入,而不是根据数据量运行),而肮脏的方法是使用一些循环:

data_tup = tuple(np.empty(len(data), dtype=data.dtype[i]) for i in range(len(data[0])))
for i, line in enumerate(data):
    for j, item in enumerate(line):
        data_tup[j][i] = item

这将为您提供一个包含每列数据的Ndarray元组。

您正在指示genfromtxt返回一个包含4个元素元组的数组。查看
converters
np.genfromtxt
的输入选项。如果创建一个以浮点形式返回日期的转换器,则无需指定dtype(默认为浮点)。如果希望将日期作为不同的数据类型(例如datetime),则可以指定dtype=None(以创建对象数组)。如果提供尝试导入的文件的几行,我们可以帮助您定义转换器。