在Python中以自定义格式打印矩阵

问题描述 投票:0回答:1

我有很多在Python程序中生成的矩阵,例如下面的

a
,需要以特定的形式输出它们。

import numpy as np
a = np.array([[1/10000009, 2, 3], [3, 4/3000897, 5]])
print(a)

这将打印

[[9.99999100e-08 2.00000000e+00 3.00000000e+00]
 [3.00000000e+00 1.33293479e-06 5.00000000e+00]]

但是,我需要将其打印为

{{9.99999100*^-08, 2.00000000*^+00, 3.00000000*^+00},{3.00000000*^+00, 1.33293479^*-06, 5.00000000*^+00}}

即矩阵结构在任何级别都由

{ , , , }
表示,并且在科学记数法中
e
*^
取代。

如何做到这一点?

一个密切相关的问题是,如果

a
是像
a=[[1/10000009, 2, 3], [3, 4/3000897, 5]]
这样的列表的列表,而不是上面的
np.array

python arrays formatting scientific-notation
1个回答
0
投票

您可以将对 numpy.ndarray 的引用传递给 str() 以获取其字符串表示形式。

然后只需翻译字符串如下:

import numpy as np

translator = str.maketrans({"e": "*^", "[": "{", "]": "}"})

a = np.array([[1 / 10000009, 2, 3], [3, 4 / 3000897, 5]])

print(str(a).translate(translator))

输出:

{{9.99999100*^-08 2.00000000*^+00 3.00000000*^+00}
 {3.00000000*^+00 1.33293479*^-06 5.00000000*^+00}}
© www.soinside.com 2019 - 2024. All rights reserved.