【发布时间】:2021-03-29 16:07:58
【问题描述】:
我有一个数组y, len(y) = M,其中包含来自0 -> N 的值。例如,N = 3:
y = [0, 2, 0, 1, 2, 1, 0, 2]
发生矩阵A定义如下:
- 尺寸
MxM A(i,j) = 1 if y(i) == y(j)A(i,j) = 0 if y(i) != y(j)
一个简单的算法是:
def incidence(y):
M = len(y)
A = np.zeros((M,M))
for i in range(M):
for j in range(M):
if y[i]==y[j]:
A[i,j] = 1
return A
但这很慢。有没有办法更快地做到这一点?例如,使用列表理解或向量化。
【问题讨论】:
标签: python algorithm numpy cluster-analysis vectorization