当前位置: 首页 > 面试题库 >

高效和Pythonic检查奇异矩阵

钮才哲
2023-03-14
问题内容

在这里处理一些矩阵代数。有时我需要将一个可能为奇数或病态的矩阵求逆。我知道简单地做到这一点是pythonic的:

try:
    i = linalg.inv(x)
except LinAlgErr as err:
    #handle it

但不确定效率如何。这会更好吗?

if linalg.cond(x) < 1/sys.float_info.epsilon:
    i = linalg.inv(x)
else:
    #handle it

numpy.linalg是否可以简单地执行我所要求的测试?


问题答案:

因此,根据此处的输入,我将显式测试标记为原始代码块作为解决方案:

if linalg.cond(x) < 1/sys.float_info.epsilon:
    i = linalg.inv(x)
else:
    #handle it

令人惊讶的是,numpy.linalg.inv函数不执行此测试。我检查了一下代码,发现它经过了所有处理,然后仅调用了lapack例程-
效率很低。另外,我会指出DaveP的观点:除非明确需要矩阵的逆,否则不应该对其进行计算。



 类似资料:
  • 假设我们想检查一个矩阵(或数据框)中的哪些行存在于另一个矩阵中。我找到的所有解决方案,这个肯定基本的操作似乎要么需要一个库(这个{data.table} 4-线性),要么是冗长和模糊的,例如: 有人知道一种使用基函数的更优雅的方法,其效率与本例相当吗? 代码无效。

  • 本文向大家介绍unity3d 快速高效的检查,包括了unity3d 快速高效的检查的使用技巧和注意事项,需要的朋友参考一下 示例 尽可能避免不必要的操作和方法调用,尤其是在每秒多次调用的方法中,例如Update。 距离/范围检查 比较距离时使用sqrMagnitude代替magnitude。这避免了不必要的sqrt操作。请注意,在使用时sqrMagnitude,右侧也必须平方。 边界检查 可以通过

  • 校验者: @RyanZhiNie @羊三 翻译者: @羊三 许多应用需要能够对新观测进行判断,判断其是否与现有观测服从同一分布(即新观测为内围值),相反则被认为不服从同一分布(即新观测为异常值)。 通常,这种能力被用于清理实际的数据集。必须做出两种重要区分: 新奇检测: 训练数据未被异常值污染,我们对于新观测中的异常情况有兴趣检测。 异常值检测: 训练数据包含异常值,我们需要拟合出训练数据的中心模

  • 很少的要求。 在发布你的答案之前,请!! 确保函数不会对其他数据产生错误,模拟几个类似的矩阵。(关掉种子) 确保你的功能比我的快 确保你的函数和我的完全一样,在不同的矩阵上模拟它(关闭种子) 举个例子 目前我已收到多达5个答案,但没有一个适合上述任何一点: ======================================================函数在逻辑矩阵的第一列中查找,如果

  • 我有以下两个示例,我不清楚java.lang.Exception是如何处理的:作为检查的或未检查的异常。 以下方法编译成功: 在这里,我认为java.lang.Exception是威胁java.lang.RuntimeException或java.lang.Error。不处理也可以声明扔。 如果我们没有使用异常,而是使用了检查异常(它是java.lang.Exception的子类),那么您必须在方

  • 问题内容: 我正在尝试使用NLTK和熊猫创建术语文档矩阵。我写了以下函数: 运行它 它适用于语料库中的一些小文件,但是 当我尝试使用4,000个文件(每个约2 kb)的语料库运行它时,出现 MemoryError 。 我想念什么吗? 我正在使用32位python。(在Windows 7、64位OS,Core Quad CPU,8 GB RAM上)。我真的需要对这种大小的语料库使用64位吗? 问题答