【问题标题】:How to create matrix containing fraction numbers in numpy如何在numpy中创建包含分数的矩阵
【发布时间】: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 对编码包有什么建议吗?

标签: python numpy matrix


【解决方案1】:

显然有些事情做错了。然而,

B = np.array([ [0, -1/4, -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)

现在给出有效的输出。

【讨论】:

    猜你喜欢
    • 2014-08-06
    • 1970-01-01
    • 2019-01-04
    • 1970-01-01
    • 2020-09-07
    • 2010-10-08
    • 1970-01-01
    相关资源
    最近更新 更多