打印 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