当前位置: 首页 > 面试题库 >

使用numpy.loadtxt加载同时包含float和string的文本文件

濮阳旺
2023-03-14
问题内容

我有一个文本文件data.txt,其中包含:

5.1,3.5,1.4,0.2,Iris-setosa
4.9,3.0,1.4,0.2,Iris-setosa
5.8,2.7,4.1,1.0,Iris-versicolor
6.2,2.2,4.5,1.5,Iris-versicolor
6.4,3.1,5.5,1.8,Iris-virginica
6.0,3.0,4.8,1.8,Iris-virginica

我如何使用来加载此数据,numpy.loadtxt()以便在诸如加载后获得NumPy数组[['5.1' '3.5' '1.4' '0.2' 'Iris-setosa'] ['4.9' '3.0' '1.4' '0.2' 'Iris-setosa'] ...]

我试过了

np.loadtxt(open("data.txt"), 'r',
           dtype={
               'names': (
                   'sepal length', 'sepal width', 'petal length',
                   'petal width', 'label'),
               'formats': (
                   np.float, np.float, np.float, np.float, np.str)},
           delimiter= ',', skiprows=0)

问题答案:

如果使用np.genfromtxt,则可以指定dtype=None,这将genfromtxt智能地猜测每列的dtype。最方便的是,它使您不必为字符串列指定所需的字节数。(通过指定例如来省略字节数是np.str行不通的。)

In [58]: np.genfromtxt('data.txt', delimiter=',', dtype=None, names=('sepal length', 'sepal width', 'petal length', 'petal width', 'label'))
Out[58]: 
array([(5.1, 3.5, 1.4, 0.2, 'Iris-setosa'),
       (4.9, 3.0, 1.4, 0.2, 'Iris-setosa'),
       (5.8, 2.7, 4.1, 1.0, 'Iris-versicolor'),
       (6.2, 2.2, 4.5, 1.5, 'Iris-versicolor'),
       (6.4, 3.1, 5.5, 1.8, 'Iris-virginica'),
       (6.0, 3.0, 4.8, 1.8, 'Iris-virginica')], 
      dtype=[('sepal_length', '<f8'), ('sepal_width', '<f8'), ('petal_length', '<f8'), ('petal_width', '<f8'), ('label', 'S15')])

如果您确实想使用np.loadtxt,然后以最小的更改来修复代码,则可以使用:

np.loadtxt("data.txt",
   dtype={'names': ('sepal length', 'sepal width', 'petal length', 'petal width', 'label'),
          'formats': (np.float, np.float, np.float, np.float, '|S15')},
   delimiter=',', skiprows=0)

主要区别只是更改np.str|S15(15字节的字符串)。

另外要注意的 open("data.txt"), 'r'open("data.txt", 'r')。但是由于np.loadtxt可以接受文件名,因此您根本不需要使用文件名open



 类似资料:
  • 我的问题是:我有两个标签。 我的目标是单击只包含单词“word”而不包含“microsoft word”的标签。 所以我做了这个: 但是这种方法让我点击包含“单词”的标签,而不等于“单词”,所以我点击的标签是第一个,而不是我想要的第二个。 我必须找到一种方法来检查等式,但我没有找到。 我能怎么办?

  • 上面的XPath查询捕获了我正在查看的特定部分中的所有文本,这很棒。但是,我只需要知道testuser是否在那个部分。

  • manifest.xml提供商 资源文件 使用fileprovider 参考:此处 描述:我无法使用此文件提供程序打开图像、文本文件、pdf。当我打开文件文本文件时,它的give me ERR\u UNKNOWN\u URL\u方案。如果我打开图片或pdf,它什么都不显示

  • 我正在使用OWL API加载不同的文件并合并为一个进行推理。我有一个描述本体的文件和几个与个人的文件。当我打印它显示的公理时,每个个体都有foaf属性,例如,foaf:title “AnnotationAssertion(http://xmlns.com/foaf/0.1/title...” 多谢了。

  • 我正在开发一个maven插件来使用OWL-APIV3.4.3和HermiT 1.3.8.4验证OWL本体。一些OWL本体是专有的,因此在Web上不可用。 查看文档,我正在使用加载OWL文件以执行验证: 当本体不导入任何专有本体,但否则返回error时,此操作很好。我见过有人使用在本体URI和定义实体的物理文件之间创建链接,但我认为这在我的情况下行不通(主要是因为文件名未知)。 有没有办法告诉OWL

  • 我正在尝试用Python加载和解析一个JSON文件。但我无法加载文件: 收益率: