不使用 Numpy 的矩阵求逆

2024-04-22

我想在不使用的情况下反转矩阵numpy.linalg.inv.

原因是我使用 Numba 来加速代码,但不支持 numpy.linalg.inv,所以我想知道是否可以使用“经典”Python 代码反转矩阵。

With numpy.linalg.inv示例代码如下所示:

import numpy as np
M = np.array([[1,0,0],[0,1,0],[0,0,1]])
Minv = np.linalg.inv(M)

在我看来,这是一个更优雅和可扩展的解决方案。它适用于任何 nxn 矩阵,您可能会发现其他方法也有用。请注意, getMatrixInverse(m) 将数组数组作为输入。如有任何问题,请随时提出。

def transposeMatrix(m):
    return map(list,zip(*m))

def getMatrixMinor(m,i,j):
    return [row[:j] + row[j+1:] for row in (m[:i]+m[i+1:])]

def getMatrixDeternminant(m):
    #base case for 2x2 matrix
    if len(m) == 2:
        return m[0][0]*m[1][1]-m[0][1]*m[1][0]

    determinant = 0
    for c in range(len(m)):
        determinant += ((-1)**c)*m[0][c]*getMatrixDeternminant(getMatrixMinor(m,0,c))
    return determinant

def getMatrixInverse(m):
    determinant = getMatrixDeternminant(m)
    #special case for 2x2 matrix:
    if len(m) == 2:
        return [[m[1][1]/determinant, -1*m[0][1]/determinant],
                [-1*m[1][0]/determinant, m[0][0]/determinant]]

    #find matrix of cofactors
    cofactors = []
    for r in range(len(m)):
        cofactorRow = []
        for c in range(len(m)):
            minor = getMatrixMinor(m,r,c)
            cofactorRow.append(((-1)**(r+c)) * getMatrixDeternminant(minor))
        cofactors.append(cofactorRow)
    cofactors = transposeMatrix(cofactors)
    for r in range(len(cofactors)):
        for c in range(len(cofactors)):
            cofactors[r][c] = cofactors[r][c]/determinant
    return cofactors
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

不使用 Numpy 的矩阵求逆 的相关文章

  • 在 MAC OS X 10.9 上安装 NLTK 确实很困难

    我是 Python Mac OS 新手 我正在寻找 NLTK 教科书 但我在安装它时遇到了一些问题 我一直在寻找解决方案 但不幸的是 所有解决方案似乎都不适合我 或者我误解了如何使用它们 我遇到的基本问题是 尽管按照说明进行操作 NLTK
  • 用于将 cython 中的许多 C++ 类包装到单个共享对象的项目结构

    我在文档 邮件列表和这个问题在这里 https stackoverflow com questions 10300660 cython and distutils 但我想得到一个更直接的答案来解决我的具体情况 我正在通过尝试一点一点地包装我
  • Django:按钮链接

    我是一名 Django 新手用户 尝试创建一个按钮 单击该按钮会链接到我网站中的另一个页面 我尝试了一些不同的例子 但似乎没有一个对我有用 举个例子 为什么这不起作用
  • 使用 matplotlib 绘制时间序列数据并仅在年初显示年份

    rcParams date autoformatter month b n Y 我正在使用 matpltolib 来绘制时间序列 如果我按上述方式设置 rcParams 则生成的图会在每个刻度处标记月份名称和年份 我怎样才能将其设置为仅在每
  • 如何使用Conda下载python包并随后离线安装?

    我知道通过 pip 我可以使用以下命令下载 Python 包 但 pip install 破坏了我的内部包依赖关系 当我做 pip download
  • 是否可以忽略一行的pyright检查?

    我需要忽略一行的pyright 检查 有什么特别的评论吗 def create slog group SLogGroup data Optional dict None SLog insert one SLog group group da
  • 基于代理的模拟:性能问题:Python vs NetLogo & Repast

    我正在 Python 3 中复制一小段 Sugarscape 代理模拟模型 我发现我的代码的性能比 NetLogo 慢约 3 倍 这可能是我的代码的问题 还是Python的固有限制 显然 这只是代码的一个片段 但 Python 却花费了三分
  • 以编程方式停止Python脚本的执行? [复制]

    这个问题在这里已经有答案了 是否可以使用命令在任意行停止执行 python 脚本 Like some code quit quit at this point some more code that s not executed sys e
  • 使用 Tkinter 显示 numpy 数组中的图像

    我对 Python 缺乏经验 第一次使用 Tkinter 制作一个 UI 显示我的数字分类程序与 mnist 数据集的结果 当图像来自 numpy 数组而不是我的 PC 上的文件路径时 我有一个关于在 Tkinter 中显示图像的问题 我为
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本
  • 如何在Python中获取葡萄牙语字符?

    我正在研究葡萄牙语 角色看起来很奇怪 我怎样才能解决这个问题 代码 import feedparser import random Vou definir os feeds feeds conf feedurl http pplware s
  • BeautifulSoup 中的嵌套标签 - Python

    我在网站和 stackoverflow 上查看了许多示例 但找不到解决我的问题的通用解决方案 我正在处理一个非常混乱的网站 我想抓取一些数据 标记看起来像这样 table tbody tr tr tr td td td table tr t
  • 如何在ipywidget按钮中显示全文?

    我正在创建一个ipywidget带有一些文本的按钮 但按钮中未显示全文 我使用的代码如下 import ipywidgets as widgets from IPython display import display button wid
  • Flask如何获取请求的HTTP_ORIGIN

    我想用我自己设置的 Access Control Allow Origin 标头做出响应 而弄清楚请求中的 HTTP ORIGIN 参数在哪里似乎很混乱 我在用着烧瓶 0 10 1 以及HTTP ORIGIN似乎是这个的特点之一object
  • Python 的“zip”内置函数的 Ruby 等价物是什么?

    Ruby 是否有与 Python 内置函数等效的东西zip功能 如果不是 做同样事情的简洁方法是什么 一些背景信息 当我试图找到一种干净的方法来进行涉及两个数组的检查时 出现了这个问题 如果我有zip 我可以写这样的东西 zip a b a
  • 在Python中获取文件描述符的位置

    比如说 我有一个原始数字文件描述符 我需要根据它获取文件中的当前位置 import os psutil some code that works with file lp lib open path to file p psutil Pro
  • IO 密集型任务中的 Python 多线程

    建议仅在 IO 密集型任务中使用 Python 多线程 因为 Python 有一个全局解释器锁 GIL 只允许一个线程持有 Python 解释器的控制权 然而 多线程对于 IO 密集型操作有意义吗 https stackoverflow c
  • 在f字符串中转义字符[重复]

    这个问题在这里已经有答案了 我遇到了以下问题f string gt gt gt a hello how to print hello gt gt gt f a a gt gt gt f a File
  • 使用其构造函数初始化 OrderedDict 以便保留初始数据的顺序的正确方法?

    初始化有序字典 OD 以使其保留初始数据的顺序的正确方法是什么 from collections import OrderedDict Obviously wrong because regular dict loses order d O
  • Scrapy:如何使用元在方法之间传递项目

    我是 scrapy 和 python 的新手 我试图将 parse quotes 中的项目 item author 传递给下一个解析方法 parse bio 我尝试了 request meta 和 response meta 方法 如 sc

随机推荐

  • CLR 使用实体框架检测到无效程序

    我正在从 wordpress 数据库中检索数据 该数据库将主键定义为decimal我在项目中使用 x64 配置 我搜索了一下发现这就是问题所在 但我找不到解决方案 我需要做什么 下载才能使用decimal作为主键 Microsoft Con
  • 在 IntelliJ IDEA 中运行 Jest 测试

    我创建了一个 React 应用程序create react app版本 1 4 0 并在 IntelliJ 中打开生成的项目 现在我也尝试在 IntelliJ 中运行生成的测试 当我这样做时 我得到以下输出 usr bin node hom
  • Angular-Formly:隐藏/禁用服务字段

    我有一项服务 其中我尝试禁用角度形式字段 formField templateOptions disabled true 即使 templateOption 对象是正确的 该字段也不会被禁用 templateOptions type tex
  • Lambda 表达式中的 OrderBy 降序排列?

    我知道在正常的 Linq 语法中 orderby xxx descending很简单 但是如何在 Lambda 表达式中做到这一点呢 正如布兰农所说 这是OrderByDescending http msdn microsoft com e
  • Visual Studio 中的解决方案文件夹是什么?

    我有一个 Visual Studio 2008 解决方案 我想在解决方案中包含一个真实的文件夹 但不是在项目级别 而是在解决方案级别 我注意到您可以右键单击该解决方案并添加一个解决方案文件夹 但它显示为一些白色文件夹 我怀疑它到底应该是什么
  • Swift 中 CGImage 的 RGB 数据

    我尝试过培养阅读能力RGB 像素数据 https stackoverflow com questions 6073259 getting rgb pixel data from cgimage在斯威夫特 获取基本图像信息没有问题 但我认为指
  • 将系列列表传递给 SetSeries

    我将 DotNet Highcharts 与 Visual Studio 2010 结合使用 我创建了一个系列数组 List
  • {} while(0) 在宏中如何工作?

    尽管这个话题已经在本论坛和所有其他论坛上讨论过很多次 但我仍然心存疑虑 请帮忙 如何do while 0 Linux内核中的宏工作 例如 define preempt disable do while 0 它如何禁用抢占 define mi
  • 尝试使用 Razor 引擎解析模板时,程序集“mscorlib”中的“System.Security.Principal.WindowsImpersonationContext”错误

    我必须创建一个能够发送电子邮件的 Asp Net Web Api 我成功发送了电子邮件 但仅使用存储在本地变量中的简单模板 下一步是从外部文件渲染模板 如下所示 string filePath C Data EmailClient Emai
  • 远程执行hadoop作业时出现异常

    我正在尝试在远程 hadoop 集群上执行 Hadoop 作业 下面是我的代码 Configuration conf new Configuration conf set fs default name hdfs server 9000 c
  • 使用 RCurl 登录 mediawiki

    我如何使用 RCurl 或 Curl 我可以将其适应 R 包 登录到 mediawiki 我只想解析一个页面 但我需要登录 否则我无法访问它 Mediawiki API 有一个登录函数 它返回 cookie 和令牌 您必须保存并将两者发送回
  • mscordacwks.dll 和 mscorwks.dll 混淆

    mscordacwks dll 和 mscorwks dll 在 Net Framework 运行时 构建和调试过程中执行哪些不同的功能 有关于这个主题的推荐读物吗 我已经搜索了很长一段时间但失败了 提前致谢 乔治 mscorwks 是主要
  • 如何在 Node.js 中使用模板(把手或任何替代方案)而不使用框架(ex = express)?

    例如 我有这个 JSON 文档 foo json foo bar Hello World bar The End 在 Node js 中 我想使用模板 handlebars 或任何模板 从 JSON 文档生成字符串 例如 p Hello W
  • 连接 WCF 客户端缓存?

    我的应用程序使用客户端企业缓存 我想避免为每个可缓存调用编写代码 并想知道是否有一种解决方案可以缓存 WCF 客户端调用 即使对于异步调用也是如此 这可以通过 WCF 行为 或其他方式来完成吗 代码示例 前几天 我使用 WCF 服务客户端
  • JavaScript作用域问题

    我正在调用此函数 将结果分配给回调中的变量 然后记录结果 但我一直未定义 var id test getID function result id result console log id 如果我将其更改为下面的代码 那么我可以看到记录的
  • Pipenv shell 无法创建虚拟环境

    我正在尝试使用运行 Django 项目pipenv shell 但是当我输入命令时pipenv shell 它失败 pipenv shell Creating a virtualenv for this project Pipfile Us
  • 如何实现帧破坏器?

    我正在寻找一个指南 描述如何实现一个工作框架破坏者 该框架还可以处理浏览器中没有激活 JS 的人 I read 这个问题很好 https stackoverflow com questions 958997但我绝对对 自己不要这样做 或 也
  • 使用 RequireJS 时如何从 CDN 加载第三方 JavaScript?

    我一直在使用 RequireJS 进行依赖管理 并且必须说我喜欢它 JavaScript 最近确实已经成熟了 然而 我无法弄清楚的一件事是 当使用优化器将所有 JavaScript 模块捆绑到一个文件中时 如何才能继续从外部 CDN URL
  • 在 HDP 2.2 上运行 Spark Streaming 作业时出现 NoSuchMethodError

    我正在尝试在 HDP 2 2 Sandbox 上运行简单的流作业 但面临 java lang NoSuchMethodError 错误 我可以在这台机器上运行 SparkPi 示例 没有任何问题 以下是我正在使用的版本
  • 不使用 Numpy 的矩阵求逆

    我想在不使用的情况下反转矩阵numpy linalg inv 原因是我使用 Numba 来加速代码 但不支持 numpy linalg inv 所以我想知道是否可以使用 经典 Python 代码反转矩阵 With numpy linalg