例如,如果我有两个数组:
a = np.array([1,2,3,4,5,6,7])
b = np.array([1, 2])
我想得到以下结果:
c = np.array([a[0]*b[0] - a[1]*b[1],a[0]*b[1] - a[1]*b[2], so on, a[0]*b[n-2] - a[1]*b[n-1]])
我对类似numpy
的卷积方法感兴趣,该方法可以在两个数组上应用自定义函数。
我尝试过卷积:
np.convolve(a, b)
但是我无法使用卷积函数应用自定义函数
答案 0 :(得分:1)
convolve
暗示着总和,但您可以通过将第二项设置为负数来使之减去:
b_neg = b.copy()
np.negative.at(b_neg, 1)
# or just b_neg = np.array([1, -2])
out = np.convolve(a, b_neg, node = 'valid')
也就是说,如果您只想要自定义功能,则需要@mrks回答
答案 1 :(得分:0)
我似乎好像在寻找scipy.ndimage.generic_filter
。您找到文档here。
示例:
import functools
from scipy.ndimage import generic_filter
def fun(input_chunk, coeffs):
... # calculate result
return result
c = generic_filter(a, functools.partial(fun, coeffs=b), size=len(b))