是否有一种方法可以在每两个元素上应用一个函数?

问题描述 投票:0回答:2

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

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)

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

python numpy convolution
2个回答
0
投票

我似乎是在寻找scipy.ndimage.generic_filter。您找到文档here

示例:

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))

0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.