Numpy / Polyfit - 禁止打印英特尔MKL错误消息

时间:2014-06-11 21:59:17

标签: python numpy scipy warnings 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")

其中包含一些警告,但不包括英特尔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(默认,2013年11月10日,19:24:24)[MSC v.1500 64 bit(AMD64)],NumPy 1.8.0

2 个答案:

答案 0 :(得分:2)

如果函数决定直接向stdout / stderr打印错误消息而不使用普通的Python错误报告机制(即异常处理和警告),那么你几乎无法阻止它这样做。如果它真的让你烦恼,你可以完全压制写入stderr。在另一个SO问题中有一个解决方案,如何临时(例如,只为此功能): Suppress stdout / stderr print from Python functions。显然,如果你这样做,你也会错过这个函数的所有相关输出,所以要谨慎使用它。

答案 1 :(得分:1)

错误

  

英特尔MKL错误:进入DELSD时参数4不正确

输入中有Nan或Inf值时会出现

。请检查并判断它。