如何使用两个相同维度的矩阵执行逐元素自定义函数



无法找到任何有关此的信息。如果我有两个相同维度的 m x n 矩阵,有没有办法在它们上应用 numpty 中的元素函数?为了说明我的 意义:

自定义函数为 F(x,y(

第一个矩阵:

array([[ a, b],
[ c, d],
[ e, f]])

第二个矩阵:

array([[ g, h],
[ i, j],
[ k, l]])

有没有办法在numpy中使用上述两个矩阵来获得所需的输出

array([[ F(a,g), F(b,h)],
[ F(c,i), F(d,j)],
[ F(e,k), F(f,l)]])

我知道我可以做嵌套for语句,但我认为可能有更干净的方法

对于一般函数F(x,y),您可以执行以下操作:

out = [F(x,y) for x,y in zip(arr1.ravel(), arr2.ravel())]
out = np.array(out).reshape(arr1.shape)

但是,如果可能的话,我建议以可以矢量化的方式重写F(x,y)

# non vectorized F
def F(x,y):
return math.sin(x) + math.sin(y)
# vectorized F
def Fv(x,y):
return np.sin(x) + np.sin(y)
# this would fail - need to go the route above
out = F(arr1, arr2)
# this would work
out = Fv(arr1, arr2)

您可以使用numpy.vectorize函数:

import numpy as np
a = np.array([[ 'a', 'b'],
[ 'c', 'd'],
[ 'e', 'f']])
b = np.array([[ 'g', 'h'],
[ 'i', 'j'],
[ 'k', 'l']])
def F(x,y):
return x+y
F_vectorized = np.vectorize(F)
c = F_vectorized(a, b)
print(c)

输出:

array([['ag', 'bh'],
['ci', 'dj'],
['ek', 'fl']], dtype='<U2')

相关内容

  • 没有找到相关文章

最新更新