打印 table 格式的 numpy 矩阵
Print a table format of a numpy matrix
在我的一个课程项目中,我编写了单纯形算法并将输出记录在 NumPy 矩阵中,如下所示
table =
[[-1.00000000e+00 0.00000000e+00 0.00000000e+00 2.13333333e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e-01 6.66666667e-02 3.86666667e+00 6.00000000e+00 4.50000000e+00 0.00000000e+00 0.00000000e+00 2.42766667e+03]
[ 3.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 4.00000000e+02]
[ 1.00000000e+00 0.00000000e+00 1.00000000e+00 -8.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 8.00000000e+00 -3.00000000e+00 -3.00000000e+00 0.00000000e+00 0.00000000e+00 8.00000000e+01]
[ 5.00000000e+00 0.00000000e+00 0.00000000e+00 -5.33333333e-01 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 -6.66666667e-02 5.33333333e-01 -2.00000000e-01 -2.00000000e-01 0.00000000e+00 0.00000000e+00 1.33333333e+00]
[ 0.00000000e+00 1.00000000e+00 0.00000000e+00 4.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -4.00000000e+00 2.00000000e+00 2.00000000e+00 0.00000000e+00 0.00000000e+00 1.60000000e+02]
[ 4.00000000e+00 0.00000000e+00 0.00000000e+00 4.00000000e-01 0.00000000e+00 1.00000000e+00 0.00000000e+00 -1.00000000e-01 0.00000000e+00 -4.00000000e-01 2.00000000e-01 2.00000000e-01 0.00000000e+00 0.00000000e+00 1.10000000e+01]
[ 1.10000000e+01 6.93889390e-18 0.00000000e+00 1.33333333e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e-01 6.66666667e-02 -1.33333333e-01 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 8.76666667e+01]
[ 1.20000000e+01 0.00000000e+00 0.00000000e+00 4.00000000e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -4.00000000e-01 -6.00000000e-01 -6.00000000e-01 0.00000000e+00 1.00000000e+00 1.60000000e+01]]
我的问题是,如何按以下格式打印此矩阵(表示单纯形 table)?
非常感谢。
虽然这不是一个完美的解决方案,而且维护起来肯定有点混乱,但这是一种接近您正在寻找的方法。注意:由于懒惰,我只格式化了前 4 列和最后一列,但这应该让您了解如何处理其他列。
def format_array(ar):
shp = ar.shape
for r in range(shp[0]):
lst = ar[r]
print(f'{lst[0]:>6.0f} | {lst[1]:>12.6g} | {lst[3]:>12.6g} | {lst[4]:>12.6g} | {lst[5]:<12.6g} ||{lst[14]:<12.6g}')
if r == 0:
print('='.rjust(80,'='))
给定你的数组,这是上面的结果:
-1 | 0 | 2.13333 | 0 | 0 ||2427.67
================================================================================
3 | 0 | 0 | 1 | 0 ||400
1 | 0 | -8 | 0 | 0 ||80
5 | 0 | -0.533333 | 0 | 0 ||1.33333
0 | 1 | 4 | 0 | 0 ||160
4 | 0 | 0.4 | 0 | 1 ||11
11 | 6.93889e-18 | 0.133333 | 0 | 0 ||87.6667
12 | 0 | 0.4 | 0 | 0 ||16
在我的一个课程项目中,我编写了单纯形算法并将输出记录在 NumPy 矩阵中,如下所示
table =
[[-1.00000000e+00 0.00000000e+00 0.00000000e+00 2.13333333e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e-01 6.66666667e-02 3.86666667e+00 6.00000000e+00 4.50000000e+00 0.00000000e+00 0.00000000e+00 2.42766667e+03]
[ 3.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 0.00000000e+00 4.00000000e+02]
[ 1.00000000e+00 0.00000000e+00 1.00000000e+00 -8.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 8.00000000e+00 -3.00000000e+00 -3.00000000e+00 0.00000000e+00 0.00000000e+00 8.00000000e+01]
[ 5.00000000e+00 0.00000000e+00 0.00000000e+00 -5.33333333e-01 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 -6.66666667e-02 5.33333333e-01 -2.00000000e-01 -2.00000000e-01 0.00000000e+00 0.00000000e+00 1.33333333e+00]
[ 0.00000000e+00 1.00000000e+00 0.00000000e+00 4.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -4.00000000e+00 2.00000000e+00 2.00000000e+00 0.00000000e+00 0.00000000e+00 1.60000000e+02]
[ 4.00000000e+00 0.00000000e+00 0.00000000e+00 4.00000000e-01 0.00000000e+00 1.00000000e+00 0.00000000e+00 -1.00000000e-01 0.00000000e+00 -4.00000000e-01 2.00000000e-01 2.00000000e-01 0.00000000e+00 0.00000000e+00 1.10000000e+01]
[ 1.10000000e+01 6.93889390e-18 0.00000000e+00 1.33333333e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e-01 6.66666667e-02 -1.33333333e-01 0.00000000e+00 0.00000000e+00 1.00000000e+00 0.00000000e+00 8.76666667e+01]
[ 1.20000000e+01 0.00000000e+00 0.00000000e+00 4.00000000e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 -4.00000000e-01 -6.00000000e-01 -6.00000000e-01 0.00000000e+00 1.00000000e+00 1.60000000e+01]]
我的问题是,如何按以下格式打印此矩阵(表示单纯形 table)?
非常感谢。
虽然这不是一个完美的解决方案,而且维护起来肯定有点混乱,但这是一种接近您正在寻找的方法。注意:由于懒惰,我只格式化了前 4 列和最后一列,但这应该让您了解如何处理其他列。
def format_array(ar):
shp = ar.shape
for r in range(shp[0]):
lst = ar[r]
print(f'{lst[0]:>6.0f} | {lst[1]:>12.6g} | {lst[3]:>12.6g} | {lst[4]:>12.6g} | {lst[5]:<12.6g} ||{lst[14]:<12.6g}')
if r == 0:
print('='.rjust(80,'='))
给定你的数组,这是上面的结果:
-1 | 0 | 2.13333 | 0 | 0 ||2427.67
================================================================================
3 | 0 | 0 | 1 | 0 ||400
1 | 0 | -8 | 0 | 0 ||80
5 | 0 | -0.533333 | 0 | 0 ||1.33333
0 | 1 | 4 | 0 | 0 ||160
4 | 0 | 0.4 | 0 | 1 ||11
11 | 6.93889e-18 | 0.133333 | 0 | 0 ||87.6667
12 | 0 | 0.4 | 0 | 0 ||16