Numpy / Polyfit - Suppress printing of Intel MKL Error message

僤鯓⒐⒋嵵緔 提交于 2019-12-01 07:21:31

问题


I'm computing a polyfit multiple times during a program, and some of my inputs are np.nan and are going to get the algorithm problems. I know this, and in this application I don't care.

When things mess up, this is printed to the console:

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

I simply want to suppress this error. I've already tried:

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

Which suppresses some warnings, but not the Intel MKL one. I simply want to keep it from printing in the console (since it breaks up the other status messages I'm printing).

The following should trigger the problem:

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 (default, Nov 10 2013, 19:24:24) [MSC v.1500 64 bit (AMD64)], NumPy 1.8.0


回答1:


If a function decides to print an error message directly to stdout/stderr without using the normal Python error reporting mechanism (i.e. exception handling and warnings), there's little you can do to stop it from doing so. If it really annoys you, you can apparently suppress writing to stderr altogether. There is a solution in another SO question as to how to do it temporarily (e.g. just for this function): Suppress stdout / stderr print from Python functions. Obviously if you do this, you're also going to miss all the relevant outputs from this function, too, so use it with caution.




回答2:


The error

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

occurs when you have Nan or Inf value in your input. Please check and impute it.



来源:https://stackoverflow.com/questions/24173301/numpy-polyfit-suppress-printing-of-intel-mkl-error-message

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!