размещение значений в заголовке столбца и заголовке строки - PullRequest
0 голосов
/ 09 октября 2018

этот код работает отлично.Мне просто нужна помощь, чтобы разместить комбинацию значений кортежа матрицы в столбце, а также в строках:

from __future__ import division
import seaborn as sns; sns.set()

def transition_matrix(transitions):
    states = 1+ max(transitions) #number of states 

    MAT = [[0]*states for _ in range(states)] #placeholder to shape the matrix based on states
    #print('mat', M)

    for (i,j) in zip(transitions,transitions[1:]):
        #print(i, j)
        """matrix with transition from state i to state j"""
        MAT[i][j] += 1

    #print("matrix with transition",M)


    for row in  MAT:
        """calculating probabilities"""
        s = sum(row)
        if s > 0:
            row[:] = [f/s for f in row]
    return MAT

#test:


employeeCountperEmployer = [1, 2, 3, 1, 4, 2, 1]
m = transition_matrix(employeeCountperEmployer)
#print(m)
for row in m:    
    print('|'.join('{0:.2f}'.format(x) for x in row))

, это генерирует следующее:

0.00|0.00|0.00|0.00|0.00
0.00|0.00|0.50|0.00|0.50
0.00|0.50|0.00|0.50|0.00
0.00|1.00|0.00|0.00|0.00
0.00|0.00|1.00|0.00|0.00

Однако я хотел это как

        1    2     3     4
   1   0.00|0.00|0.00|0.00|0.00
   2   0.00|0.00|0.50|0.00|0.50
   3   0.00|0.50|0.00|0.50|0.00
   4   0.00|1.00|0.00|0.00|0.00
       0.00|0.00|1.00|0.00|0.00

1 Ответ

0 голосов
/ 09 октября 2018

Это должно правильно распечатать заголовки, как вы указали.Это немного сложно, так как вы ожидаете, что заголовок не распечатает последнее значение, но это должно вывести его, как и ожидалось.

print('\t{}'.format('    '.join(str(i) for i in range(1, len(matrix)))))

for index, row in enumerate(matrix):
    if index < len(m) - 1:
        print('{}\t'.format(str(index + 1))),
    else:
        print(' \t'),
    print('|'.join('{0:.2f}'.format(x) for x in row))

Вы всегда можете использовать пробелы вместо табуляции (\t)если вы хотите, чтобы заголовки строк были на другом расстоянии.

...