微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将Scipy LinearOperator转换为numpy数组

如何解决如何将Scipy LinearOperator转换为numpy数组

我正在尝试将使用 Keops 生成 LazyTensor 对象转换为 Numpy 数组。 LazyTensor 对象没有属性可直接将其转换为 Numpy 数组。因此,我使用函数aslinearoperator作为特技函数,将该符号张量对象转换为scipy线性算子。

>>> A shape  (15230,10) A  KeOps LazyTensor
>>> from scipy.sparse.linalg import aslinearoperator
>>> L = aslinearoperator(A)
>>> L 
>>> <15230x10 _CustomLinearOperator with dtype=float32>

我的问题是如何将n×m LinearOperator 转换为 Numpy数组

解决方法

您可以使用从MatrixLinearOperator返回的aslinearoperatorA属性,如果它对您实例化L有用

>>> from scipy.sparse.linalg import aslinearoperator
>>> import numpy as np
>>>
>>> L = aslinearoperator(np.array([[1,2,3],[4,5,6]]))
>>> L.A
array([[1,6]])

否则,只需乘以identityeye / identity基本上是相同的-我只是不知道眼睛是什么,但确实知道 identity ;))),如果返回了线性运算符的其他子类(我不熟悉Keops及其对象)。

L * np.identity(L.shape[1])

因为身份将是(m,m),产品将返回原始矩阵。

,

例如.dot一个单位矩阵https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.linalg.LinearOperator.dot.html#scipy.sparse.linalg.LinearOperator.dot

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。