В PyCharm, как разбить строку в импортированном коде расширения Cython - PullRequest
0 голосов
/ 03 января 2019

Я пытаюсь проверить функцию LinearNDInterpolator, вызванную в следующем коде Python

from scipy.interpolate.interpnd import LinearNDInterpolator

Я хотел бы запустить функцию вызова скрипта Python LinearNDInterpolator и установить точку останова, скажем, в строке 304 функции LinearNDInterpolator. Как я могу это сделать?

Я использую PyCharm. Я не могу «войти» в код LinearNDInterpolator. Ниже приведен пример сценария, который я выполняю.

import numpy as np
from scipy.interpolate.interpnd import LinearNDInterpolator
import matplotlib.pyplot as plt

x = np.linspace(-1,1,100)
y =  np.linspace(-1,1,100)
X, Y = np.meshgrid(x,y)

def f(x, y):
    s = np.hypot(x, y)
    phi = np.arctan2(y, x)
    tau = s + s*(1-s)/5 * np.sin(6*phi) 
    return 5*(1-tau) + tau

T = f(X, Y)
# Choose npts random point from the discrete domain of our model function
npts = 400
px, py = np.random.choice(x, npts), np.random.choice(y, npts)

fig, ax = plt.subplots(nrows=2, ncols=2)
# Plot the model function and the randomly selected sample points
ax[0,0].contourf(X, Y, T)
ax[0,0].scatter(px, py, c='k', alpha=0.2, marker='.')
ax[0,0].set_title('Sample points on f(X,Y)')

# Interpolate using three different methods and plot
i = 0
method = 'linear'
#for i, method in enumerate(('nearest', 'linear', 'cubic')):
ip = LinearNDInterpolator((px, py), f(px,py))
Ti = ip((X, Y))
r, c = (i+1) // 2, (i+1) % 2
ax[r,c].contourf(X, Y, Ti)
ax[r,c].set_title('method = {}'.format(method))

plt.show()

1 Ответ

0 голосов
/ 06 января 2019

РЕДАКТИРОВАТЬ - пример кода работает для меня за вычетом закомментированной строки, которая была в ошибке

enter image description here

Итак, я проверил это сам.

Найдите папку site-packages, чтобы найти исходные файлы scipy

В PowerShell

python -m site

Для меня эта папка была C: \ Program Files (x86) \ Python37-32 \ Lib \ site-packages \ scipy

откройте файл init .py в pycharm и установите точку останова в первой строке кода

__all__ = ['test'] <- breakpoint there

Выполнить> Отладка> Шаг в мой код

enter image description here

...