我正在尝试使用来自scipy.sparse的dok_matrix和嵌套的for循环生成二进制矩阵,但是时间复杂度过高(超过2360万行和34565列)。
下面的代码中的行,articles ['article_id]和articles ['title']包含字符串。如果两个后续变量中的字符串包含行中的给定字符串,则我想在二进制矩阵中加1,否则为-1。
必须有一种更快的方法吗?
import numpy as np
from scipy.sparse import dok_matrix
data = dok_matrix((len(rows),articles['article_id'].size), dtype=np.int8)
for i in range(len(rows)):
for j in range(articles['article_id'].size):
if (rows[i] in articles['Content'][j]) or (rows[i] in articles['Title'][j]):
data[i,j] = 1
else:
data[i,j] = -1