这个问题有两部分(也许一个解决方案?):
从稀疏矩阵中获取样本向量:是否有一种简单的方法从稀疏矩阵中获取样本向量? 当我尝试使用random.sample抽取行时,会出现TypeError:稀疏矩阵长度不明确。
从稀疏矩阵中获取样本向量:是否有一种简单的方法从稀疏矩阵中获取样本向量? 当我尝试使用random.sample抽取行时,会出现TypeError:稀疏矩阵长度不明确。
from random import sample
import numpy as np
from scipy.sparse import lil_matrix
K = 2
m = [[1,2],[0,4],[5,0],[0,8]]
sample(m,K) #works OK
mm = np.array(m)
sample(m,K) #works OK
sm = lil_matrix(m)
sample(sm,K) #throws exception TypeError: sparse matrix length is ambiguous.
我的当前解决方案是从矩阵的行数中进行采样,然后使用getrow()函数,类似于:
indxSampls = sample(range(sm.shape[0]), k)
sampledRows = []
for i in indxSampls:
sampledRows+=[sm.getrow(i)]
还有其他高效/优雅的方法吗?密集矩阵大小为1000x30000,可能更大。
从稀疏向量列表构建稀疏矩阵:现在假设我有采样向量采样行的列表,如何将其转换为稀疏矩阵而不使其密集化,将其转换为列表的列表,然后将其转换为lil_matrix?