gpt4 book ai didi

python - Numpy - 对矩阵中所有行的组合应用自定义函数以获得新矩阵?

转载 作者:行者123 更新时间:2023-12-05 07:30:58 24 4
gpt4 key购买 nike

我有以下函数,它对 2 个数组应用直方图交集内核:

def histogram_intersection_kernel(X, Y):

k = np.array([])
for x_i,y_i in zip(X,Y):
k = np.append(k,np.minimum(x_i,y_i))
return np.sum(k)

现在,假设我有以下矩阵“mat”:

[[1,0,0,2,3],
[2,3,4,0,1],
[3,3,5,0,1]]

我想找到一种有效的方法来获取矩阵,该矩阵是将“histogram_intersection_kernel”应用于 mat 中所有行的组合的结果。在这个例子中它将是:

[[6,2,2],
[6,10,10],
[2,10,12]]

最佳答案

将尺寸扩展到 3D 并利用 broadcasting -

np.minimum(a[:,None,:],a[None,:,:]).sum(axis=2)

或者简单地说——

np.minimum(a[:,None],a).sum(2)

sample 运行-

In [248]: a
Out[248]:
array([[1, 0, 0, 2, 3],
[2, 3, 4, 0, 1],
[3, 3, 5, 0, 1]])

In [249]: np.minimum(a[:,None],a).sum(2)
Out[249]:
array([[ 6, 2, 2],
[ 2, 10, 10],
[ 2, 10, 12]])

关于python - Numpy - 对矩阵中所有行的组合应用自定义函数以获得新矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52004248/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com