簡體   English   中英

將 function 應用於 numpy 矩陣列表

[英]Apply function to list of numpy matrices

我正在研究 python。 所以,我得到了一個主矩陣,我們稱之為“X”。 然后我得到了一個名為 Z 的其他 5000 個矩陣的列表。我想在 X 和 Z 內的每個矩陣之間應用 sklearn.metrics.pairwise.cosine_similarity function 並取矩陣內的平均值。 我不想做一個 for 循環,因為它需要大量時間。 有沒有辦法在沒有 for 循環的情況下進行多處理?

from sklearn.metrics.pairwise import cosine_similarity
Z = [numpy.random.rand(7,12),numpy.random.rand(7,12),numpy.random.rand(7,12)] #in my example X contains 5000 matrices, here only 3
X = numpy.random.rand(7,12)

#the loop I want to get rid of
cosine_similarities = []
for matrix in Z:
    cosine_similarities.append(cosine_similarity(X, matrix).mean())

這是一種避免循環的方法。 如果Z中的所有矩陣都具有相同的形狀,您可以簡單地將它們堆疊並找到余弦相似度,然后將它們拆分:

Y = np.vstack(Z)
cosine_similarities  = sklearn.metrics.pairwise.cosine_similarity(X, Y).reshape(len(Z),X.shape[0],-1)

它將返回一個數組,其中每一行是X的余弦相似度和Z的元素。 如果你想取平均值:

cosine_similarities = cosine_similarities.mean((1,2))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM