当使用条件语句过滤SciPy稀疏数组中的值时,如何获得这些值的索引?
我尝试使用apply条件语句到csc_array().data
来获取索引,但是它们与csc_array().nonzero()
索引不匹配。下面是我所面临的问题的一个例子:
import numpy as np
from scipy.sparse import dok_array, csc_array
m = dok_array((1000, 1000))
for i, j in zip(np.random.randint(0, 1000, 100), np.random.randint(0, 1000, 100)):
m[i, j] = np.random.random()
threshold = 0.3
tmp = csc_array(m)
mask = tmp.data < threshold
i, j = tmp.nonzero()
i_mask, j_mask = i[mask], j[mask]
assert np.alltrue(tmp[i_mask, j_mask] < threshold), "This fails!!!"
1条答案
按热度按时间5w9g7ksd1#
要解决
csc_array().data
和csc_array().nonzero()
的顺序不匹配的问题,只需在整个过程中使用nonzero
索引即可,如下所示: