给定一个行向量a = np.array([1, 2, 3])
和一个列向量b = np.array([[1], [2], [3]])
,我们可以通过执行c = a==b
来逐个比较所有元素,该函数返回
>>> c
array([[ True, False, False],
[False, True, False],
[False, False, True]])
然而,当元素的数量非常大时,这需要大量的存储器。是否可以使用下面的稀疏矩阵a
和b
,并高效地计算稀疏矩阵c
?
from scipy.sparse import csr_matrix
data = np.array([1, 2, 3])
row = np.array([0, 1, 2])
col = np.array([0, 0, 0])
a = csr_matrix((data, (row, col)), shape=(3, 1))
b = csr_matrix((data, (col, row)), shape=(1, 3))
1条答案
按热度按时间j91ykkif1#
为了加快a==B的速度,你可以使用
numexpr.evaluate('a==b')
,但是这不会消除内存负担。相反,您可以储存的索引,其中a==B为True:
为清楚起见: