【问题标题】:empty strings after genfromtxt numpygenfromtxt numpy 之后的空字符串
【发布时间】:2014-06-24 19:14:11
【问题描述】:

感谢您的耐心等待,因为我对 python 还很陌生。输入文件是一个制表符分隔的表格。

import numpy as np
#from StringIO import StringIO

inputfile=raw_input('Filepath please: ')

fieldnames='Reference Position, Type, Length, Reference, Allele, Linkage, Zygosity, \
    Count, Coverage, Frequency, Hyper-allelic, Forward/reverse balance, Average quality, \
    Overlapping annotations, Coding region change, Amino acid change'
fieldtypes='int,str,int,str,str,str,str,int,int,float,str,float,float,str,str,str'

with open(inputfile) as f:
    storage=np.genfromtxt(f, skip_header=1, delimiter='\t', names=fieldnames, dtype=fieldtypes)

print storage

我得到一个 ValueError: 元组的大小必须匹配字段数。

帮助?


编辑:

嗯,在执行@Wooble 的建议后,没有更多错误了……

EDIT2:

但现在的问题是,在我打印存储之后,所有 dtype str 的单元格都是空字符串('')。这是为什么呢?

编辑3: 我通过将上面的 str 类型更改为 |S# 来解决空字符串问题,其中 # 是整数。

【问题讨论】:

  • 输入文件中有什么? (顺便说一句,使用真实文件的内容制作 StringIO 是......有点傻。StringIO 用于当您需要类似文件的对象但没有真实文件时。)而且,进一步,不要.close() 在上下文管理器中打开的文件;关键是上下文管理器将其关闭。
  • (另外,使用raw_input 而不是使用input 并告诉用户包含引号......)
  • 感谢@Wooble 的帮助。我正在根据您的建议进行编辑。此外,输入文件是一个制表符分隔的 txt 表格。
  • 制表符分隔的表格中有空单元格……这会影响什么吗?
  • 除此之外:如果您使用的是命名列以及混合的数字和非数字数据,那么使用 pandas 可能会比使用裸 numpy 更幸运。

标签: python string numpy


【解决方案1】:

但现在的问题是,在我打印存储之后,所有 dtype str 的单元格都是空字符串('')。这是为什么呢?

EDIT3:我通过将上面的 str 类型更改为 |S# 来解决空字符串问题,其中 # 是一个整数。

EDIT4:见下面济南丹戈的评论。

【讨论】:

  • 你能解释一下你指的是什么整数吗?它是正在读取的字符串的最大长度,还是什么?
  • fieldtypes='int,|S1,int,|S2,|S3, etc. etc. ' ...因为这是很久以前的事了,我不确定我是否记得,但这是我的最佳猜测。
  • 算出来了,这个数字就是正在读取的字符串的最大长度。它不仅仅是连续编号系统。所以 '|S64' 读取最多 64 个字符的字符串。
猜你喜欢
  • 2017-03-02
  • 2014-03-24
  • 2023-04-03
  • 1970-01-01
  • 2017-03-21
  • 1970-01-01
  • 2016-01-18
  • 2012-05-10
  • 2013-01-14
相关资源
最近更新 更多