【问题标题】:Use numpy.loadtxt() to load txt file with tab delimiter FAIL使用 numpy.loadtxt() 加载带有制表符分隔符的 txt 文件 FAIL
【发布时间】:2019-08-11 03:57:01
【问题描述】:

我正在尝试使用 numpy.loadtxt() 加载制表符分隔符的 .txt 文件。但是我运行了一个错误,它读取信息和选项卡,例如'1 2 3',不能转换成浮点数据。

data = np.loadtxt("myfile.txt", delimiter='\t')


看起来文件的分隔符是“\n”。另一个问题是,在打印出来之前,如何分辨 txt 文件中的 '\t' 和 '\n' 中的哪个分隔符?

【问题讨论】:

  • 您对错误有什么不明白的地方?显然,至少有一行包含“1 2 3”的列,没有用制表符分隔。默认加载格式是浮点数。如有必要,请重新阅读 loadtxt 文档。如果您需要更多帮助,请考虑提供文件样本。
  • 我刚刚发现分隔符是'\n',而不是'\t'。不打印txt文件你知道怎么区分吗?

标签: python numpy delimiter


【解决方案1】:

分隔符的默认值是任何空格
如果有 \n 则 numpy 有下一行,如下面的代码。

>>> import numpy
>>> from io import StringIO
>>> dataset = StringIO('''\
... 4\t5\n6 7\n8\t\t\t\t\t\t9''')
>>> dataset_as_numpy = numpy.loadtxt(dataset)
>>> dataset_as_numpy
array([[ 4.,  5.],
       [ 6.,  7.],
       [ 8.,  9.]])

实际上,我们可以在文本文件中分辨出不同,而无需打印或打开它。在执行某些任务之前弄清楚数据集的格式很重要。

【讨论】:

  • 是的,我知道 \n 表示下一行,但只是想知道如果我们只打开文本文件如何区分,因为在我的情况下,文本文件只显示数字之间的空格,但事实证明,一个空格实际上是\n。
  • @Hao Xu,我认为另一种方法是在您的文本编辑器中使用“显示空白”。或者另一种方法是使用 open() 将数据加载为字符串格式后重写数据。抱歉这么尴尬的回复。
  • 完全没问题。不用担心。我认为最好的方法是在阅读文件后打印出来,然后我可以看到打印中包含 \t 或 \n。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-12
  • 2011-09-26
  • 2011-01-17
相关资源
最近更新 更多