【发布时间】:2020-06-18 16:39:39
【问题描述】:
有关如何加快此功能的任何建议?
def smooth_surface(z,c):
hph_arr_list = []
for x in xrange(c,len(z)-(c+1)):
new_arr = np.hstack(z[x-c:x+c])
hph_arr_list.append(np.percentile(new_arr[((new_arr >= np.percentile(new_arr,15)) & (new_arr <= np.percentile(new_arr,85)))],99))
return np.array(map(float,hph_arr_list))
变量z 的长度约为1500 万,c 是窗口大小+ 和- 的值。该函数基本上是一个滑动窗口,每次迭代计算一个百分位值。任何帮助,将不胜感激! z 是一个数组数组(因此是 np.hstack)。也许任何想法 numba 会对此有所帮助。如果有,如何实施?
【问题讨论】:
-
xrange建议这是 Python2 的代码。这是正确的吗? -
是的,这是 python 2。对不起,应该添加的
-
确切地说是 2.7
-
实际窗口大小有多大?
z中子数组的平均大小是多少? -
如果您在问题中包含一个可重现的示例,其中还包括经过的时间,您可能会得到一些更有用的结果。这意味着添加输入数据、导入和输出数据。天真地,滑动窗口可能是您可以加速的东西
标签: python python-2.7 performance cython numba