【问题标题】:How to ignore Python warnings for complex numbers如何忽略复数的 Python 警告
【发布时间】:2016-12-06 17:39:40
【问题描述】:

我有一个需要包含实值和复值的列表。但是,当我不使用 numpy.zeros(dtype=complex) 初始化数组时,出现以下错误:

n[2] = 3.7095 + 0.007j

TypeError: 无法将复数转换为浮点数

但是,当我将 dtype 设置为复杂时,当我使用实数时会收到以下警告(这不会破坏我的代码,但会导致大量不必要的红色警告消息使我的控制台混乱:

ComplexWarning:将复数转换为实数会丢弃虚数 部分

如何禁用警告消息,或以其他方式设置它以使值可以是虚构的或复杂的?

【问题讨论】:

  • 将实数与复数 dtype 数组一起使用不应给您带来 ComplexWarning。如果您收到这样的警告,则说明您还有其他未向我们展示的错误。
  • 该警告来自于执行以下操作:numpy.array([2+3j]).astype(numpy.int)。我想你把你的两个案子弄混了。为什么不对所有事情都使用复数呢,2+0j2 一样“真实”。如果您只需要某物的真实部分,请执行numpy.array([2+3j]).real

标签: python list numpy complex-numbers


【解决方案1】:

您可以使用它来忽略警告消息:

import warnings
warnings.filterwarnings('ignore')

文档:https://docs.python.org/2/library/warnings.html

我已经包含了文档的链接,因为还有更多“软”方法来处理警告,例如只打印第一次出现的警告(“一次”)。 在您的情况下,也可以仅过滤某些类别的警告 (ComplexWarning)。

【讨论】:

  • 当然,但请记住,警告还应该告诉您您没有安全/有效地处理数据,因此消除警告而不是修复代码不是一个好主意。
猜你喜欢
  • 2010-10-27
  • 2016-10-03
  • 2018-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多