gpt4 book ai didi

python - 如何从 scipy LinearOperator 获取 numpy 数组?

转载 作者:太空宇宙 更新时间:2023-11-03 15:53:58 31 4
gpt4 key购买 nike

我有一个在某些程序包中构造的 LinearOperator 。我想计算 iLU 预处理器并在 scipy 求解器中使用它。问题是预处理器计算的输入对象的类型。如果你想使用“spilu”函数,你应该在输入中使用 numpy 数组,但我有一个 LinearOperator!因此,如何将 LinearOperator 转换为 numpy 数组?或者是否存在其他计算 iLU 预处理器的方法?

最佳答案

获得与LinearOperator关联的矩阵的一种方法是将其乘以单位矩阵。

在此示例中,op 是形状为 (3, 3) 的 LinearOperator:

In [103]: op
Out[103]: <3x3 MyOperator with dtype=int64>

这是与 op 关联的实际矩阵:

In [104]: op * np.eye(op.shape[1], dtype=op.dtype)
Out[104]:
array([[1, 2, 0],
[3, 4, 5],
[0, 6, 7]])

警告! np.eye() 创建一个dense 数组,上面的乘法返回一个dense numpy 数组。如果您的 LinearOperator 的形状太大,您可能会耗尽内存。

LinearOperator稀疏矩阵而不生成中间密集数组可能是可能的,但需要更多的代码。在花费太多时间之前,请检查您拥有的特定 LinearOperator 的属性和方法。它可能具有已经采用稀疏格式的内部数据。

关于python - 如何从 scipy LinearOperator 获取 numpy 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40974301/

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