首页 > 解决方案 > 如何在python中计算ndarray持有Fraction类型变量的倒数?

问题描述

我试图在 python 中计算二维数组的倒数,该数组包含分数并且无法将其转换为浮点数,因为我需要正确保持分子和分母之间的比率。

A = np.array([[Fraction(1), Fraction(-0.5)], [Fraction(-4/9), Fraction(1)]])

当我尝试np.linalg.inv(A)时,我收到以下错误: 'TypeError: No loop match the specified signature and cast was found for ufunc inv'

标签: pythonnumpyfractions

解决方案


Fraction是 Python 类型,但不是本机 numpy dtype。换句话说,从 numpy 的角度来看,Fractions是(不透明的)对象。如果您设法使用 numpy 方法对它们进行操作,它们很可能会自动转换为浮点类型(在 numpy 中是本机的)。

长话短说,没有 numpy 向量化方法能够处理Fraction对象,因此您不应该使用np.array来存储它们,而是坚持使用普通的旧列表,或者如果您想处理 2D 数组,则使用列表列表。


推荐阅读