如果我有密集矩阵d
d = np.random.rand(4,4); d
>>> array([[ 0.95969707, 0.91678543, 0.28401043, 0.27390336],
[ 0.50924662, 0.37591608, 0.32424021, 0.56422093],
[ 0.61126002, 0.42979466, 0.67529606, 0.4462593 ],
[ 0.12900253, 0.81314236, 0.40393894, 0.79878679]])
如何转换/过滤低于阈值的值并将其转换为0.0以便我可以将d
变为稀疏的csr矩阵?所以在上面的示例中,第一个步骤将是这样的:
threshold = 0.8
d = d.filter(lambda x: x > threshold ); d # pseudo code - filter values below 0.8
>>> array([[ 0.95969707, 0.91678543, 0.0, 0.0],
[ 0.0, 0.0, 0.0, 0.0],
[ 0.0, 0.0, 0.0, 0.0],
[ 0.0, 0.81314236, 0.0, 0.0]])
然后将d转换为稀疏的csr矩阵:
scipy.sparse.csr_matrix(d)
>>> <3x3 sparse matrix of type '<class 'numpy.int32'>'
with 4 stored elements in Compressed Sparse Row format>
编辑:我见过像:
这样的方法d = d[np.where(d>0.8)]; d
>>> array([ 0.95969707, 0.91678543 , 0.81314236])
但这不会保留d
的形状,因此无法转换为csr矩阵
答案 0 :(得分:1)
d[d<0.8] = 0.0
scipy.sparse.csr_matrix(d)
效果很好