gpt4 book ai didi

python - 如何对 scipy.sparse.csr_matrix 类型的矩阵进行元素运算?

转载 作者:太空狗 更新时间:2023-10-29 22:16:45 26 4
gpt4 key购买 nike

在 numpy 中,如果你想计算矩阵(元素化)的每个条目的正弦

a = numpy.arange(0,27,3).reshape(3,3)
numpy.sin(a)

将完成工作!如果你想要权力让我们说每个条目中的 2

a**2

会做的。

但是如果你有一个稀疏矩阵,事情看起来就更难了。至少除了遍历 lil_matrix 格式的每个条目并对其进行操作之外,我还没有想出一种方法来做到这一点。

我找到了 this question on SO并尝试适应this answer但我没有成功。

目标是按元素计算 CSR 格式的 scipy.sparse 矩阵的平方根(或 1/2 的幂)。

你有什么建议?

最佳答案

以下技巧适用于将零映射到零的任何操作,并且仅适用于这些操作,因为它只涉及非零元素。即,它适用于 sinsqrt 但不适用于 cos

X 成为一些 CSR 矩阵...

>>> from scipy.sparse import csr_matrix
>>> X = csr_matrix(np.arange(10).reshape(2, 5), dtype=np.float)
>>> X.A
array([[ 0., 1., 2., 3., 4.],
[ 5., 6., 7., 8., 9.]])

非零元素的值为X.data:

>>> X.data
array([ 1., 2., 3., 4., 5., 6., 7., 8., 9.])

您可以就地更新:

>>> X.data[:] = np.sqrt(X.data)
>>> X.A
array([[ 0. , 1. , 1.41421356, 1.73205081, 2. ],
[ 2.23606798, 2.44948974, 2.64575131, 2.82842712, 3. ]])

更新 在最新版本的 SciPy 中,您可以执行类似 X.sqrt() 的操作,其中 X 是一个稀疏矩阵以获得具有 X 中元素平方根的新副本。

关于python - 如何对 scipy.sparse.csr_matrix 类型的矩阵进行元素运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8906506/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com