我对NumPy/SciPy插值方法感到困惑.我实现了3D线性插值,LinearNDInterpolator我发现它非常慢.然后我在纯Python中编写了一个暴力三重循环方法,令人惊讶的是它给了我1000倍的加速.我也为Numba包装拍了一张照片,结果并没有变得更快.
通过我在互联网上找到的任何来源,与NumPy/SciPy和Numba相比,Python循环应该是超级的.但这不是我所看到的.
我发布了我运行的完整源代码.我在机器上得到这些时间:
Numpy ready: 3.94499993324 s, result[0]= 0.480961746817
Python for loop...
Python ready: 0.0299999713898 s, result[0]= 0.480961746817
Numba for loop...
Numba 0 ready: 0.223000049591 s, result[0]= 0.480961746817
Numba for loop...
Numba 1 ready: 0.0360000133514 s, result[0]= 0.480961746817
Run Code Online (Sandbox Code Playgroud)
我使用的是Anaconda Python 2.7.我在这里错过了什么?
import numpy
import scipy.interpolate
import time
from numba import jit
# x: a (40,) numpy array of ordered ints
# y: a (30,) numpy array of ordered ints
# z: a (10,) numpy array of ordered ints …Run Code Online (Sandbox Code Playgroud) 我在 Python 代码中遇到了一个对我来说很奇怪的错误,现在我对全局字典的工作方式感到困惑。
我的示例代码:
myDict={'two':2,'three':3}
def f():
print myDict
f()
Run Code Online (Sandbox Code Playgroud)
提供我期望的输出: {'two': 2, 'three': 3}
但是,如果我用一行更改代码:
myDict={'two':2,'three':3}
def f():
print myDict
myDict={}
f()
Run Code Online (Sandbox Code Playgroud)
然后我得到
Traceback (most recent call last):
File "test.py", line 9, in <module>
f()
File "proba.py", line 7, in f
print myDict
UnboundLocalError: local variable 'myDict' referenced before assignment
Run Code Online (Sandbox Code Playgroud)
我的问题:
myDict在函数中打印全局f,为什么我不能重新分配它?myDict={}尽管稍后执行,该行如何中断打印命令?我正在使用 Python 2.7。感谢您的帮助!