python 如何有效地迭代具有太多列的大型矩阵中的行?

nukf8bse  于 2022-10-30  发布在  Python
关注(0)|答案(1)|浏览(136)

我正在研究文档聚类,首先从tf-idf结果中构建一个距离矩阵。我使用下面的代码来获得tf-idf矩阵:

from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer = TfidfVectorizer(stop_words={'english'})
X = vectorizer.fit_transform(models)

这样得到一个矩阵(9069,22210)。现在我想从这个矩阵(9069*9069)构建一个距离矩阵。我使用下面的代码来实现这一点:

import numpy as np
import pandas as pd
from scipy.spatial import distance_matrix
from scipy.spatial import distance

arrX = X.toarray()

rowSize = X.shape[0]
distMatrix = np.zeros(shape=(rowSize, rowSize))

# build distance matrix

for i, x in enumerate(arrX):
    for j, y in enumerate(arrX):   
        distMatrix[i][j] = distance.braycurtis(x, y)

np.savetxt("dist.csv", distMatrix, delimiter=",")

这段代码的问题是,对于这个矩阵大小来说,它的速度非常慢。有没有更快的方法?

7dl7o3gd

7dl7o3gd1#

您可以看到,您给予的NumPy多维矩阵的各个元素以两种方式保存在内存中。它们是:行主要列主要每一个都有它的优点和缺点。你甚至可以控制它的存储方式。我希望你觉得这有帮助

相关问题