【问题标题】:numpy.loadtxt does not read file with complex numbersnumpy.loadtxt 不读取复数文件
【发布时间】:2015-09-10 17:51:25
【问题描述】:

我正在尝试读取格式为复数的文件:

data.dat

1.5795219122457646E-11-3.852906516379872E-15i   -3.5949335665378405E-12-1.626143709108086E-15i
-6.720365121161621E-15-5.377186331212649E-17i   -3.736251476362349E-15-3.0190920417856674E-17i

我使用以下代码读取文件:

import numpy as np

c_complex = np.loadtxt('data.dat', delimiter='\t', dtype=np.complex128)

但它给了我以下错误:

TypeError: complex() argument must be a string or a number, not 'bytes'

我能做些什么来解决这个问题?

非常感谢您的帮助

【问题讨论】:

  • 我是否正确假设您使用的是 Python 3?
  • 在这种情况下,这可能是numpy 中的一个错误,尽管我无法想象如此基本的东西未经测试。问题是,在 Python 3 中,无法将字节串传递给 complex(),因为文本不再由字节串表示。看起来文件似乎是由loadtxt() 以二进制模式打开的。
  • 是 Python 3.4.3 和 numpy 1.9.2
  • 如果我使用 Python 2,错误是:ValueError: complex() arg is a malformed string

标签: python numpy


【解决方案1】:

这似乎是旧版本 numpy (Issue) 中的一个错误。要么将你的 numpy 更新到他们的 github 存储库的最新版本,要么使用函数 numpy.genfromtxt()。

c.complex = np.genfromtxt('data.dat', delimiter='\t', dtype=np.complex128)

【讨论】:

  • c_complex ,而不是 c.complex 会抛出错误
猜你喜欢
  • 2021-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-03
  • 1970-01-01
  • 2013-10-10
  • 2012-08-24
  • 1970-01-01
相关资源
最近更新 更多