首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加载带有空格的字符串作为numpy数组

问加载带有空格的字符串作为numpy数组
EN

Stack Overflow用户
提问于 2013-05-21 11:59:00
回答 2查看 4.1K关注 0票数 2

我想以numpy数组的形式加载csv文件。每一行都包含带空格的字符串字段。我尝试了numpy中提供的loadtxt()和genfromtxt()方法。默认情况下,这两种方法都将空格视为分隔符,并将字符串中的每个单词分隔为单独的列。有没有办法使用loadtxt()或genfromtxt()加载这种类型的数据,或者我必须为它编写自己的代码?

我的文件中的样例行:

826##25733##Emanuele Buratti## ##Mammalian cell expression

这里,##是分隔符,空格表示缺少的值。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-21 12:05:40

我认为您的问题是默认注释字符#与您的分隔符冲突。我可以像这样加载你的数据:

代码语言:javascript
复制
>>> import numpy as np
>>> np.loadtxt('/tmp/sample.txt', dtype=str, delimiter='##', comments=None)
array(['826', '25733', 'Emanuele Buratti', ' ', 'Mammalian cell expression'], 
      dtype='|S25')

您可以看到,dtype已自动设置为最大长度字符串。如果dtype=object很麻烦,你可以使用它。顺便说一句,由于您的数据不是数值型的,因此我可能建议您使用csv模块而不是numpy来完成这项工作。

票数 4
EN

Stack Overflow用户

发布于 2013-05-21 12:13:27

以下是wim建议的csv等价物:

代码语言:javascript
复制
import csv

with open('somefile.txt') as f:
    reader = csv.reader(f, delimiter='##')
    rows = list(reader)

正如@wim指出的注释,这并不能真正起作用,因为分隔符必须是一个字符。因此,如果您更改上述设置,以便使用delimiter='#',则会得到以下结果:

代码语言:javascript
复制
[['826', '', '25733', '', 'Emanuele Buratti', '', ' ', '', 'Mammalian cell expression']]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16661880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档