如何在不触发SparseEfficiencyWarning
且不降低稀疏度的情况下,将数组中小于4的值替换为0?
from scipy import sparse
x = sparse.csr_matrix(
[[0, 1, 2, 3, 4],
[1, 2, 3, 4, 5],
[0, 0, 0, 2, 5]])
x[x < 4] = 0
x.toarray() # verifies that this works
还要注意,x
的初始版本之间的稀疏度是11个存储元素,在进行掩码之后,其上升到15个存储元素。
1条答案
按热度按时间o2rvlv0m1#
直接操作数据数组
请注意,稀疏度保持不变,除非您运行
x.eliminate_zeros()
,否则稀疏度值为零。如果出于某种原因,你不想在numpy中使用布尔掩码和花哨的索引,你可以用numba循环数组:
这也应该比numpy索引快一个相当大的程度。