Python 如何将scipy LinearRoperator转换为numpy数组

Python 如何将scipy LinearRoperator转换为numpy数组,python,numpy,scipy,Python,Numpy,Scipy,我正在尝试将使用Keops库生成的LazyTensor对象转换为Numpy数组。LazyTensor对象没有将其直接转换为Numpy数组的属性。因此,我使用函数aslinearoperator作为技巧函数,将这个符号张量对象转换为scipy线性操作符 >>> A shape (15230, 10) A KeOps LazyTensor >>> from scipy.sparse.linalg import aslinearoperator >>

我正在尝试将使用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>
>一个形状(15230,10)一个基奥普斯懒张量
>>>从scipy.sparse.linalg导入为LineAroperator
>>>L=直线加速器(A)
>>>L
>>> 

我的问题是如何将n-by-m线性构造器转换为Numpy数组

您可以使用

>>> from scipy.sparse.linalg import aslinearoperator
>>> import numpy as np
>>>
>>> L = aslinearoperator(np.array([[1, 2, 3], [4, 5, 6]]))
>>> L.A
array([[1, 2, 3],
       [4, 5, 6]])
否则,只要乘以(
eye
/
identity
基本相同-我只是不知道眼睛是什么,但知道它的identity;))如果返回线性运算符的其他子类(我不熟悉Keops及其对象)


由于标识将是
(m,m)
,产品将返回原始矩阵。

例如
.dot
标识矩阵,

为我们回顾一下
线性描述器的功能。它不只是一个实现矩阵向量乘法的抽象类吗?基本上输入迭代解算器?谢谢@modesitt。线性对象L是一个_CustomLinearOperator,它没有属性“MatrixLinearOperator”。将L与m乘以m的单位矩阵相乘有效。注意。这里的*运算符不是元素操作,而是指矩阵乘法运算。谢谢@ev br。实际上有三个选项起作用,
L=L*np.identity(L.shape[1],dtype=np.float32)
L=L.dot(np.identity(L.shape[1],dtype=np.float32))
,和
L=L.matmatmatmatmatmat(np.identity(L.shape[1],dtype=np.float32))
L * np.identity(L.shape[1])