NumPy loadtxt数据类型

2024-09-29 21:35:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试加载如下所示的数据集:

Algeria,73.131000,6406.8166213983,0.1
Angola,51.093000,5519.1831786593,2
Argentina,75.901000,15741.0457726686,0.5
Armenia,74.241000,4748.9285847709,0.1

最后,我只需要列1和列2。我不需要国名和最后一栏。本质上,我需要提取两个维度为nx1的矩阵。我知道我需要指定数据类型:

data=np.loadtxt('file.txt',delimiter=',',dtype=[('f0',str),('f1',float),('f2',float),('f3',float)])

但是,这会生成一个元组列表

array([('', 73.131, 6406.8166213983, 0.1),
   ('', 51.093, 5519.1831786593, 2.0),`

而不是

array(['',73.131,6406.8166213983,0.1],
      ['',51.093, 5519.1831786593, 2.0],

哪里出错了?


Tags: 数据datanp矩阵floatarray数据类型国名
3条回答

如果只需要前两列,可以使用^{}

import numpy as np
col1 = np.genfromtxt('yourfile.txt',usecols=(1),delimiter=',',dtype=None)
col2 = np.genfromtxt('yourfile.txt',usecols=(2),delimiter=',',dtype=None)

或者两者兼而有之:

np.genfromtxt('yourfile.txt',usecols=(1,2),delimiter=',',dtype=None)

您的“错误”是您设置了自己的数据类型。如果您不想要设置的数据类型(我看不出您不想要它的原因),可以使用skiprows和np.loadtxt()的cols参数只加载您想要的列。

结果将是一个NumPy数组,其形状为(n,2),而不是(n,3),您认为您会拥有(其中n是您的行数)。

检查NumPy's文档。

x, y = np.loadtxt(c, delimiter=',', usecols=(1, 2), unpack=True)

usecols参数应该可以完成您的工作。

相关问题 更多 >

    热门问题