使用Numpy计算亲和力矩阵

2 投票
1 回答
2308 浏览
提问于 2025-04-16 22:02

我正在尝试为一张图片创建一个亲和矩阵。现在我打算使用简单的像素值差异。我的图片是84x84的,展开后变成了一个大小为7056的向量,这样我就得到了一个7056x7056的亲和矩阵A。为了填充这个亲和矩阵的值,我开始用一种显而易见的方法:

import matplotlib.pyplot as plt
import numpy as np

Img = plt.imread("twoObj.bmp")
Img2 = Img.flatten()
(n,) = Img2.shape
print n
A = np.zeros((n,n))
for i in range(n):
    for j in range(n):
        A[i,j] = np.abs(Img2[i] - Img2[j])

但是这个方法执行起来太慢了。有没有Numpy或者其他库的内置方法可以更快地运行这个?

1 个回答

6

这听起来可能有点神秘,但

A = np.subtract.outer(Img2, Img2)
A = np.abs(A)

应该能实现你想要的效果。

我下班后会再多解释一点(如果我忘了,请提醒我!)。

撰写回答