Ошибка перехвата: «QhullError» не определен - PullRequest
0 голосов
/ 12 марта 2020

У меня проблемы с обработкой исключения в моем коде python. Ошибка возникает при попытке 3D-интерполяции на определенной сетке, используя «линейный» метод; это приводит к QhullError. Интерполяция работает нормально, используя «ближайший». Поэтому я хочу поймать 'QhullError', используя 'try / исключением'.

Когда я запускаю код, я получаю

NameError: имя 'QhullError' не определено

Я также попробовал собственный класс для обработки исключения, но он ничего не уловил вообще ...

Есть идеи о том, что мне здесь не хватает?

Большое спасибо!

Найдите код ниже:

import numpy as np
import warnings
from scipy.interpolate import LinearNDInterpolator as Lin3DInterp
from scipy.interpolate import NearestNDInterpolator as Near3DInterp
from random import random


# %% Here I tried a custom class to handle my exception... didn't work either

# class QhullError(Exception):
#     pass

# %%

# choosing interpolation method : 'linear' or 'nearest'
InterpMethod = 'linear'

# evenly spaced grid
grid_points = np.squeeze(np.array([[np.linspace(0, 9, 10)],
                                   [np.linspace(0, 9, 10)],
                                   [np.linspace(0, 9, 10)]]).transpose())
# some random values
grid_points_values = random()*grid_points


if InterpMethod == 'nearest':
    # this works fine
    interp_func = Near3DInterp(grid_points, grid_points_values)

elif InterpMethod == 'linear':

    try:
        # QhullError here, trying to catch that
        interp_func = Lin3DInterp(grid_points, grid_points_values)

    except QhullError:
        warnings.warn('QhullError : linear interpolation failed, '
                      'using ''nearest'' method instead')
        interp_func = Near3DInterp(grid_points, grid_points_values)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...