2016-12-06 2 views
2

У меня есть список, который должен включать как реальные значения, так и сложные значения. Однако, когда я не инициализировать массив, используя numpy.zeros (DTYPE = комплексные), я получаю следующее сообщение об ошибке:Как игнорировать предупреждения Python для комплексных чисел

n[2] = 3.7095 + 0.007j 

TypeError: can't convert complex to float

Однако, когда я установить DTYPE к сложному, я получаю следующее предупреждение, когда я использую реальное число (которое не нарушает мой код, но это вызывает массу ненужных красных предупреждающих сообщений, которые загромождать мою консоль:

ComplexWarning: Casting complex values to real discards the imaginary part

Как я могу отключить предупреждающее сообщение, или установить его так что значения могут быть мнимыми или сложными?

+4

Использование реальных чисел с массивом сложного dtype не должно давать вам ComplexWarning. Если вы получаете такое предупреждение, у вас есть еще одна ошибка, которую вы не показываете нам. – user2357112

+0

Это предупреждение - делать что-то вроде: 'numpy.array ([2 + 3j]). Astype (numpy.int)'. Я думаю, что у вас два случая замешаны. Почему бы просто не использовать сложные числа для всего, '2 + 0j' точно так же, как« реальный », как« 2 ». Если вам нужна только реальная часть для чего-то, просто сделайте 'numpy.array ([2 + 3j]). Real'. – Benjamin

ответ

1

Вы можете использовать это, чтобы игнорировать предупреждающие сообщения:

import warnings 
warnings.filterwarnings('ignore') 

Документация: https://docs.python.org/2/library/warnings.html

Я включил ссылку на документацию, есть и более «мягкие» методы, чтобы иметь дело с предупреждением, например, печать только первого появления предупреждения («один раз»). В вашем случае также можно фильтровать только определенные классы предупреждений (ComplexWarning).

+1

Уверен, но имейте в виду, что предупреждение также должно служить вам, чтобы вы не безопасно и эффективно обрабатывали ваши данные, поэтому молчание предупреждений вместо исправления кода не является отличной идеей. – Benjamin

Смежные вопросы