Numpy / Polyfit - подавить печать сообщения об ошибке Intel MKL

Я вычисляю polyfit несколько раз во время программы, и некоторые из моих входов np.nan и собираемся получить проблемы с алгоритмом. Я знаю это, и в этом приложении мне все равно.

Когда что-то не так, это выводится на консоль:

Intel MKL ERROR: Parameter 4 was incorrect on entry to DELSD.

Я просто хочу подавить эту ошибку. Я уже попробовал:

import warnings
warnings.simplefilter('ignore', np.RankWarning)
warnings.simplefilter('ignore', np.ComplexWarning)
warnings.filterwarnings('ignore', "Intel MKL ERROR")

Который подавляет некоторые предупреждения, но не Intel MKL. Я просто хочу, чтобы он не печатался в консоли (поскольку он разбивает другие сообщения о состоянии, которые я печатаю).

Следующее должно вызвать проблему:

import numpy as np
def line_fit(R, X):
    num_rows = np.shape(R)[0]
    p = np.zeros(num_rows)
    for i in range(num_rows):
        temp = np.polyfit(R[i, :], X[i, :], 1)
        p[i] = temp[1]
    return p
temp = np.array((((198.652-76.1781j),(132.614-43.8134j),(115.042-41.2485j),(91.7754-39.1649j),(78.8538-37.389j),(67.8769-34.6342j)),
((np.nan),(1671.79-796.522j),(1206.44-824.202j),(654.572-682.673j),(438.175-559.025j),(303.624-452.122j)),
((np.nan-1j*np.nan),(1671.32-794.931j),(1198.71-803.533j),(649.574-624.276j),(443.286-530.36j),(308.609-438.738j))))
R = np.real(temp)
X = np.imag(temp)
coeff = line_fit(R, X)

Python 2.7.6 (по умолчанию, 10 ноября 2013 г., 19:24:24) [MSC v.1500 64 бит (AMD64)], NumPy 1.8.0

2 ответа

Решение

Если функция решает напечатать сообщение об ошибке непосредственно в stdout/stderr без использования обычного механизма сообщения об ошибках Python (то есть обработки исключений и предупреждений), вы мало что можете сделать, чтобы помешать этому. Если вас это действительно раздражает, вы можете вообще запретить запись в stderr. В другом вопросе SO есть решение относительно того, как сделать это временно (например, только для этой функции): Подавить печать stdout/stderr из функций Python. Очевидно, что если вы сделаете это, вы также пропустите все соответствующие выходы этой функции, поэтому используйте ее с осторожностью.

Ошибка

Intel MKL ERROR: неверный параметр 4 при входе в DELSD

происходит, когда вы вводите значение Nan или Inf. Пожалуйста, проверьте и вменяйте это.

Другие вопросы по тегам