首先,我们需要明确一下输入向量的格式。假设用户输入的N个D维向量都是以列表的形式表示,例如:
A = [a1, a2, ..., aD]
B = [b1, b2, ..., bD]
其中ai和bi分别表示向量A和B在第i个维度上的取值。
接下来,我们可以编写一个函数来计算两个向量之间的余弦相似度。可以使用numpy库来进行向量运算,因此需要安装numpy库。import numpy as npdef cosine_similarity(vector1, vector2): dot_product = np.dot(vector1, vector2) norm1 = np.linalg.norm(vector1) norm2 = np.linalg.norm(vector2) similarity = dot_product / (norm1 * norm2) return similarity
在这个函数中,我们使用`np.dot()`函数计算两个向量的点积,使用`np.linalg.norm()`函数计算向量的范数,然后将点积除以范数的乘积得到余弦相似度。
接下来,我们可以编写主程序来实现用户输入N个向量,并计算两两向量之间的相似度。N = int(input("请输入向量个数:"))D = int(input("请输入向量维度:"))vectors = []for i in range(N): vector = [] for j in range(D): value = float(input("请输入第{}个向量的第{}个维度的取值:".format(i+1, j+1))) vector.append(value) vectors.append(vector)min_similarity = 1min_vectors = []for i in range(N): for j in range(i+1, N): similarity = cosine_similarity(vectors[i], vectors[j]) if similarity < min_similarity: min_similarity = similarity min_vectors = [vectors[i], vectors[j]]print("最小的相似度为:", min_similarity)print("对应的两个向量分别为:", min_vectors)
在主程序中,我们使用两层循环遍历所有的向量组合,并调用`cosine_similarity()`函数计算它们的相似度。如果找到了更小的相似度,则更新最小相似度和对应的向量。
最后,输出最小相似度和对应的两个向量。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |