【发布时间】:2018-04-06 13:29:40
【问题描述】:
我想制作一个包含分数的矩阵,比如 1/4,作为元素。
我做了以下矩阵:
import numpy as np
alpha = 10
B = np.array([ [0, -0.25, -1/20, alpha/40], [1/(alpha+3), 0, -1/(alpha+3), -(alpha-1)/(alpha+3) ], [ 1/(2*alpha+2), 1/(alpha+1), 0, 1/(10*alpha+10) ], [ -1/2, -9/20, 0, 0 ] ])
print(B)
但是,输出是这样的:
[[ 0. -0.25 -1. 0. ]
[ 0. 0. -1. -1. ]
[ 0. 0. 0. 0. ]
[-1. -1. 0. 0. ]]
我的问题是:如何将分数保留在矩阵中以用于计算和函数? 如果不是变量 alpha,我会将值转换为小数。
编辑
标记的重复线程似乎没有解决这个问题:
这里矩阵中的元素是从头开始手动分配的。而在链接的线程中,元素以方程的形式分配给矩阵。我认为这会让事情变得一团糟。
【问题讨论】:
-
首先,您需要一个对分数进行编码的包。 Base python 和 numpy 不这样做。他们使用花车。
sympy可能是您的最佳选择。 -
@hpaulj Python 的标准库中有一个
fractions模块! -
@BlackJack,在这种情况下,您可以构造这些
Fractions对象的对象 dtype 数组。但正如/different-behavior-of-arithmetics-on-dtype-float-object-and-float 中所讨论的那样,使用这样的数组进行数值计算将是命中注定的。 -
@hpaulj 对编码包有什么建议吗?