我需要根据列值在稀疏马赛克上应用函数。想要的矩阵是new_mtx。这段代码正是我想要的,但这需要花费太多时间(我正在做NLP,所以我有一个庞大的数据库)。
因为一个例子总是更容易理解:
import numpy as np
from scipy.sparse import csr_matrix
row = np.array([0,0,0,0,0, 1,1,1,1,1 ,2,2,2,2,2 ,3,3,3,3,3 ,4,4,4,4,4 ])
col = np.array([0,1,2,3,4, 0,1,2,3,4, 0,1,2,3,4,0,1,2,3,4,0,1,2,3,4 ])
data = np.arange(1,26)
mtx = csr_matrix((data, (row, col)), shape=(5, 5))
coef = {0:0, 1:1, 2:2, 3:3,4:4}
new_mtx = mtx.copy()
for i in range(0,mtx.shape[0]):
for j in range (0,mtx.shape[1]):
new_mtx[i,j] = pow(coef[i],mtx[i,j])
使用内置功能是否有更快的方法来实现这一目标?