【发布时间】:2019-01-06 13:44:01
【问题描述】:
我正在尝试检查以下 Python 代码中调用的函数 LinearNDInterpolator
from scipy.interpolate.interpnd import LinearNDInterpolator
我想运行一个调用函数LinearNDInterpolator 的Python 脚本并在line 304 of function 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()
【问题讨论】:
-
设置
breakpoint()有效吗?但它仅适用于 Python 3.7+。 -
@GeeTransit:我把
breakpoint()放在哪里? -
你能访问
LinearNDInterpolator的代码吗?您可以复制它并将其作为 python 文件导入,尽管这可能会破坏包。也许this 会有所帮助。 -
@GeeTransit:我尝试使用文件名“interpnd.pyx”将 Cython 文件复制到 PyCharm 中的本地目录中,并使用命令
from interpnd import LinearNDInterpolator导入函数。我遇到了错误“ImportError:没有名为 interpnd 的模块”。 PyCharm 是否允许将扩展名为.pyx的 Cython 文件添加到本地目录? -
查看 Cython 文档的 debugging section。