It's not so pretty, but this pretty table prints works:
import numpy as np names=np.array(['H', 'B', 'D', 'A', 'I', 'C', 'F']) a=np.array([[ 0., 2.4, 6.1, 3.2, 5.2, 3.9, 7.1], [2.4, 0., 4.1, 1.2, 3.2, 1.9, 5.1], [6.1, 4.1, 0., 3.1, 6.9, 2.8, 5.2], [3.2, 1.2, 3.1, 0., 4., 0.9, 4.1], [5.2, 3.2, 6.9, 4., 0., 4.7, 7.9], [3.9, 1.9 , 2.8, 0.9, 4.7, 0., 3.8], [7.1, 5.1, 5.2, 4.1, 7.9, 3.8, 0. ]]) def pptable(x_axis,y_axis,table): def format_field(field, fmt='{:,.2f}'): if type(field) is str: return field if type(field) is tuple: return field[1].format(field[0]) return fmt.format(field) def get_max_col_w(table, index): return max([len(format_field(row[index])) for row in table]) for i,l in enumerate(table): l.insert(0,y_axis[i]) x_axis.insert(0,' ') table.insert(0,x_axis) col_paddings=[get_max_col_w(table, i) for i in range(len(table[0]))] for i,row in enumerate(table):
Print
xH xB xD xA xI xC xF yH 0.00 2.40 6.10 3.20 5.20 3.90 7.10 yB 2.40 0.00 4.10 1.20 3.20 1.90 5.10 yD 6.10 4.10 0.00 3.10 6.90 2.80 5.20 yA 3.20 1.20 3.10 0.00 4.00 0.90 4.10 yI 5.20 3.20 6.90 4.00 0.00 4.70 7.90 yC 3.90 1.90 2.80 0.90 4.70 0.00 3.80 yF 7.10 5.10 5.20 4.10 7.90 3.80 0.00
If you want the X and Y axes to be the same, just call them up with two lists of the same labels.