有没有办法在每两个元素上应用一个函数?

Is there a way to apply a function on every two elemens?

例如,如果我有两个数组:

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)

但我无法使用卷积函数应用自定义函数

我看起来好像你在找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))

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 回答