Python 如何从数据文件导入numpy结构化数组

Python 如何从数据文件导入numpy结构化数组,python,arrays,numpy,structured-array,Python,Arrays,Numpy,Structured Array,我正在尝试创建一个数组,其中包含从数据文件导入的5列。其中4个是浮点数,最后一个是字符串 数据文件如下所示: 5.1,3.5,1.4,0.2,Iris-setosa 4.9,3.0,1.4,0.2,Iris-setosa 4.7,3.2,1.3,0.2,Iris-setosa 4.6,3.1,1.5,0.2,Iris-setosa 5.0,3.6,1.4,0.2,Iris-setosa 5.4,3.9,1.7,0.4,Iris-setosa 4.6,3.4,1.4,0.3,Iris-setosa

我正在尝试创建一个数组,其中包含从数据文件导入的5列。其中4个是浮点数,最后一个是字符串

数据文件如下所示:

5.1,3.5,1.4,0.2,Iris-setosa
4.9,3.0,1.4,0.2,Iris-setosa
4.7,3.2,1.3,0.2,Iris-setosa
4.6,3.1,1.5,0.2,Iris-setosa
5.0,3.6,1.4,0.2,Iris-setosa
5.4,3.9,1.7,0.4,Iris-setosa
4.6,3.4,1.4,0.3,Iris-setosa
5.0,3.4,1.5,0.2,Iris-setosa
我试过这些:

data = np.genfromtxt(filename, dtype = "float,float,float,float,str", delimiter = ",")

data = np.loadtxt(filename, dtype = "float,float,float,float,str", delimiter = ",")
,但这两个代码仅导入第一列

为什么??我怎样才能解决这个问题


谢谢你的时间

您必须正确指定str type:U20,例如最多20个字符:

data = np.loadtxt('data.txt', dtype = "float,"*4 + "U20", delimiter = ",")
似乎有效:

array([( 5.1,  3.5,  1.4,  0.2, 'Iris-setosa'),
       ( 4.9,  3. ,  1.4,  0.2, 'Iris-setosa'),
       ( 4.7,  3.2,  1.3,  0.2, 'Iris-setosa'),
       ( 4.6,  3.1,  1.5,  0.2, 'Iris-setosa'),
       ( 5. ,  3.6,  1.4,  0.2, 'Iris-setosa'),
       ( 5.4,  3.9,  1.7,  0.4, 'Iris-setosa'),
       ( 4.6,  3.4,  1.4,  0.3, 'Iris-setosa'),
       ( 5. ,  3.4,  1.5,  0.2, 'Iris-setosa')],
      dtype=[('f0', '<f8'), ('f1', '<f8'), ('f2', '<f8'), ('f3', '<f8'), ('f4', '<U20')])

看看你试过的两个函数中的usecols关键字。我试过了!相同的。。。我现在使用的默认值应该是columns@stevi,不要将输入数据作为图像发布,发布可测试的文本片段抱歉,完成!!!!除了最后一个字符串字段的大小外,您的数据类型应该可以工作。似乎正确,但请尝试table.shape,它的形状是8,而我想要8,5:/它看起来像一个数组,每行有一列元组。这对于结构化数组是正常的。熊猫可以帮你做你想做的事。edited.dtype=None应能正确推断字段的数据类型。@hpaulj我用loadtxt获得:value错误:无法将字符串转换为float:b'Iris-setosa'genfromtxt的自动数据类型优于loadtxt。
In [336]: pd.read_csv('data.txt',header=None).values
Out[336]: 
array([[5.1, 3.5, 1.4, 0.2, 'Iris-setosa'],
       [4.9, 3.0, 1.4, 0.2, 'Iris-setosa'],
       [4.7, 3.2, 1.3, 0.2, 'Iris-setosa'],
       [4.6, 3.1, 1.5, 0.2, 'Iris-setosa'],
       [5.0, 3.6, 1.4, 0.2, 'Iris-setosa'],
       [5.4, 3.9, 1.7, 0.4, 'Iris-setosa'],
       [4.6, 3.4, 1.4, 0.3, 'Iris-setosa'],
       [5.0, 3.4, 1.5, 0.2, 'Iris-setosa']], dtype=object)