распечатать массив как матрицу, поместив все элементы в правые столбцы - PullRequest
2 голосов
/ 18 июня 2020

Я пытаюсь распечатать свой фрейм данных в виде матрицы. Для этого я хочу использовать массив. Для ясности:

У меня есть словарь Y, который выглядит примерно так:

{(0, 0): {(0, 0): 0, (1, 0): 1, (0, 1): 1, (0, 2): 2, (0, 3): 3, (1, 3): 4, (0, 4): 10, (1, 4): 9, (0, 5): 11, (1, 1): 2, (1, 2): 5, (2, 2): 6, (2, 4): 8, (1, 5): 10, (2, 0): 10, (3, 0): 9, (2, 1): 7, (3, 1): 8, (3, 2): 7, (2, 3): 7, (3, 4): 9, (2, 5): 9, (3, 5): 10, (3, 3): 8}, (1, 0): {(1, 0): 0, (0, 0): 1, (1, 1): 1, (0, 1): 2, (0, 2): 3, (0, 3): 4, (1, 3): 5, (0, 4): 11, (1, 4): 10, (0, 5): 12, (1, 2): 6, (2, 2): 7, (2, 4): 9, (1, 5): 11, (2, 0): 11, (3, 0): 10, (2, 1): 8, (3, 1): 9, (3, 2): 8, (2, 3): 8, (3, 4): 10, (2, 5): 10, (3, 5): 11, (3, 3): 9}, (0, 1): {(0, 1): 0, (0, 0): 1, (0, 2): 1, (1, 0): 2, (0, 3): 2, (1, 3): 3, (0, 4): 9, (1, 4): 8, (0, 5): 10, (1, 1): 3, (1, 2): 4, (2, 2): 5, (2, 4): 7, (1, 5): 9, (2, 0): 9, (3, 0): 8, (2, 1): 6, (3, 1): 7, (3, 2): 6, (2, 3): 6, (3, 4): 8, (2, 5): 8, (3, 5): 9, (3, 3): 7}, (0, 2): {(0, 2): 0, (0, 1): 1, (0, 3): 1, (0, 0): 2, (1, 0): 3, (1, 3): 2, (0, 4): 8, (1, 4): 7, (0, 5): 9, (1, 1): 4, (1, 2): 3, (2, 2): 4, (2, 4): 6, (1, 5): 8, (2, 0): 8, (3, 0): 7, (2, 1): 5, (3, 1): 6, (3, 2): 5, (2, 3): 5, (3, 4): 7, (2, 5): 7, (3, 5): 8, (3, 3): 6}, (0, 3): {(0, 3): 0, (0, 2): 1, (1, 3): 1, (0, 0): 3, (1, 0): 4, (0, 1): 2, (0, 4): 7, (1, 4): 6, (0, 5): 8, (1, 1): 5, (1, 2): 2, (2, 2): 3, (2, 4): 5, (1, 5): 7, (2, 0): 7, (3, 0): 6, (2, 1): 4, (3, 1): 5, (3, 2): 4, (2, 3): 4, (3, 4): 6, (2, 5): 6, (3, 5): 7, (3, 3): 5}, (1, 3): {(1, 3): 0, (0, 3): 1, (1, 2): 1, (0, 0): 4, (1, 0): 5, (0, 1): 3, (0, 2): 2, (0, 4): 6, (1, 4): 5, (0, 5): 7, (1, 1): 6, (2, 2): 2, (2, 4): 4, (1, 5): 6, (2, 0): 6, (3, 0): 5, (2, 1): 3, (3, 1): 4, (3, 2): 3, (2, 3): 3, (3, 4): 5, (2, 5): 5, (3, 5): 6, (3, 3): 4}, (0, 4): {(0, 4): 0, (1, 4): 1, (0, 5): 1, (0, 0): 10, (1, 0): 11, (0, 1): 9, (0, 2): 8, (0, 3): 7, (1, 3): 6, (1, 1): 12, (1, 2): 5, (2, 2): 4, (2, 4): 2, (1, 5): 2, (2, 0): 8, (3, 0): 7, (2, 1): 5, (3, 1): 6, (3, 2): 5, (2, 3): 3, (3, 4): 3, (2, 5): 3, (3, 5): 4, (3, 3): 6}, (1, 4): {(1, 4): 0, (0, 4): 1, (2, 4): 1, (1, 5): 1, (0, 0): 9, (1, 0): 10, (0, 1): 8, (0, 2): 7, (0, 3): 6, (1, 3): 5, (0, 5): 2, (1, 1): 11, (1, 2): 4, (2, 2): 3, (2, 0): 7, (3, 0): 6, (2, 1): 4, (3, 1): 5, (3, 2): 4, (2, 3): 2, (3, 4): 2, (2, 5): 2, (3, 5): 3, (3, 3): 5}, (0, 5): {(0, 5): 0, (0, 4): 1, (0, 0): 11, (1, 0): 12, (0, 1): 10, (0, 2): 9, (0, 3): 8, (1, 3): 7, (1, 4): 2, (1, 1): 13, (1, 2): 6, (2, 2): 5, (2, 4): 3, (1, 5): 3, (2, 0): 9, (3, 0): 8, (2, 1): 6, (3, 1): 7, (3, 2): 6, (2, 3): 4, (3, 4): 4, (2, 5): 4, (3, 5): 5, (3, 3): 7}, (1, 1): {(1, 1): 0, (1, 0): 1, (0, 0): 2, (0, 1): 3, (0, 2): 4, (0, 3): 5, (1, 3): 6, (0, 4): 12, (1, 4): 11, (0, 5): 13, (1, 2): 7, (2, 2): 8, (2, 4): 10, (1, 5): 12, (2, 0): 12, (3, 0): 11, (2, 1): 9, (3, 1): 10, (3, 2): 9, (2, 3): 9, (3, 4): 11, (2, 5): 11, (3, 5): 12, (3, 3): 10}, (1, 2): {(1, 2): 0, (1, 3): 1, (2, 2): 1, (0, 0): 5, (1, 0): 6, (0, 1): 4, (0, 2): 3, (0, 3): 2, (0, 4): 5, (1, 4): 4, (0, 5): 6, (1, 1): 7, (2, 4): 3, (1, 5): 5, (2, 0): 5, (3, 0): 4, (2, 1): 2, (3, 1): 3, (3, 2): 2, (2, 3): 2, (3, 4): 4, (2, 5): 4, (3, 5): 5, (3, 3): 3}, (2, 2): {(2, 2): 0, (1, 2): 1, (2, 1): 1, (3, 2): 1, (2, 3): 1, (0, 0): 6, (1, 0): 7, (0, 1): 5, (0, 2): 4, (0, 3): 3, (1, 3): 2, (0, 4): 4, (1, 4): 3, (0, 5): 5, (1, 1): 8, (2, 4): 2, (1, 5): 4, (2, 0): 4, (3, 0): 3, (3, 1): 2, (3, 4): 3, (2, 5): 3, (3, 5): 4, (3, 3): 2}, (2, 4): {(2, 4): 0, (1, 4): 1, (2, 3): 1, (3, 4): 1, (2, 5): 1, (0, 0): 8, (1, 0): 9, (0, 1): 7, (0, 2): 6, (0, 3): 5, (1, 3): 4, (0, 4): 2, (0, 5): 3, (1, 1): 10, (1, 2): 3, (2, 2): 2, (1, 5): 2, (2, 0): 6, (3, 0): 5, (2, 1): 3, (3, 1): 4, (3, 2): 3, (3, 5): 2, (3, 3): 4}, (1, 5): {(1, 5): 0, (1, 4): 1, (0, 0): 10, (1, 0): 11, (0, 1): 9, (0, 2): 8, (0, 3): 7, (1, 3): 6, (0, 4): 2, (0, 5): 3, (1, 1): 12, (1, 2): 5, (2, 2): 4, (2, 4): 2, (2, 0): 8, (3, 0): 7, (2, 1): 5, (3, 1): 6, (3, 2): 5, (2, 3): 3, (3, 4): 3, (2, 5): 3, (3, 5): 4, (3, 3): 6}, (2, 0): {(2, 0): 0, (3, 0): 1, (0, 0): 10, (1, 0): 11, (0, 1): 9, (0, 2): 8, (0, 3): 7, (1, 3): 6, (0, 4): 8, (1, 4): 7, (0, 5): 9, (1, 1): 12, (1, 2): 5, (2, 2): 4, (2, 4): 6, (1, 5): 8, (2, 1): 3, (3, 1): 2, (3, 2): 5, (2, 3): 5, (3, 4): 7, (2, 5): 7, (3, 5): 8, (3, 3): 6}, (3, 0): {(3, 0): 0, (2, 0): 1, (3, 1): 1, (0, 0): 9, (1, 0): 10, (0, 1): 8, (0, 2): 7, (0, 3): 6, (1, 3): 5, (0, 4): 7, (1, 4): 6, (0, 5): 8, (1, 1): 11, (1, 2): 4, (2, 2): 3, (2, 4): 5, (1, 5): 7, (2, 1): 2, (3, 2): 4, (2, 3): 4, (3, 4): 6, (2, 5): 6, (3, 5): 7, (3, 3): 5}, (2, 1): {(2, 1): 0, (2, 2): 1, (3, 1): 1, (0, 0): 7, (1, 0): 8, (0, 1): 6, (0, 2): 5, (0, 3): 4, (1, 3): 3, (0, 4): 5, (1, 4): 4, (0, 5): 6, (1, 1): 9, (1, 2): 2, (2, 4): 3, (1, 5): 5, (2, 0): 3, (3, 0): 2, (3, 2): 2, (2, 3): 2, (3, 4): 4, (2, 5): 4, (3, 5): 5, (3, 3): 3}, (3, 1): {(3, 1): 0, (3, 0): 1, (2, 1): 1, (0, 0): 8, (1, 0): 9, (0, 1): 7, (0, 2): 6, (0, 3): 5, (1, 3): 4, (0, 4): 6, (1, 4): 5, (0, 5): 7, (1, 1): 10, (1, 2): 3, (2, 2): 2, (2, 4): 4, (1, 5): 6, (2, 0): 2, (3, 2): 3, (2, 3): 3, (3, 4): 5, (2, 5): 5, (3, 5): 6, (3, 3): 4}, (3, 2): {(3, 2): 0, (2, 2): 1, (3, 3): 1, (0, 0): 7, (1, 0): 8, (0, 1): 6, (0, 2): 5, (0, 3): 4, (1, 3): 3, (0, 4): 5, (1, 4): 4, (0, 5): 6, (1, 1): 9, (1, 2): 2, (2, 4): 3, (1, 5): 5, (2, 0): 5, (3, 0): 4, (2, 1): 2, (3, 1): 3, (2, 3): 2, (3, 4): 4, (2, 5): 4, (3, 5): 5}, (2, 3): {(2, 3): 0, (2, 2): 1, (2, 4): 1, (0, 0): 7, (1, 0): 8, (0, 1): 6, (0, 2): 5, (0, 3): 4, (1, 3): 3, (0, 4): 3, (1, 4): 2, (0, 5): 4, (1, 1): 9, (1, 2): 2, (1, 5): 3, (2, 0): 5, (3, 0): 4, (2, 1): 2, (3, 1): 3, (3, 2): 2, (3, 4): 2, (2, 5): 2, (3, 5): 3, (3, 3): 3}, (3, 4): {(3, 4): 0, (2, 4): 1, (0, 0): 9, (1, 0): 10, (0, 1): 8, (0, 2): 7, (0, 3): 6, (1, 3): 5, (0, 4): 3, (1, 4): 2, (0, 5): 4, (1, 1): 11, (1, 2): 4, (2, 2): 3, (1, 5): 3, (2, 0): 7, (3, 0): 6, (2, 1): 4, (3, 1): 5, (3, 2): 4, (2, 3): 2, (2, 5): 2, (3, 5): 3, (3, 3): 5}, (2, 5): {(2, 5): 0, (2, 4): 1, (3, 5): 1, (0, 0): 9, (1, 0): 10, (0, 1): 8, (0, 2): 7, (0, 3): 6, (1, 3): 5, (0, 4): 3, (1, 4): 2, (0, 5): 4, (1, 1): 11, (1, 2): 4, (2, 2): 3, (1, 5): 3, (2, 0): 7, (3, 0): 6, (2, 1): 4, (3, 1): 5, (3, 2): 4, (2, 3): 2, (3, 4): 2, (3, 3): 5}, (3, 5): {(3, 5): 0, (2, 5): 1, (0, 0): 10, (1, 0): 11, (0, 1): 9, (0, 2): 8, (0, 3): 7, (1, 3): 6, (0, 4): 4, (1, 4): 3, (0, 5): 5, (1, 1): 12, (1, 2): 5, (2, 2): 4, (2, 4): 2, (1, 5): 4, (2, 0): 8, (3, 0): 7, (2, 1): 5, (3, 1): 6, (3, 2): 5, (2, 3): 3, (3, 4): 3, (3, 3): 6}, (3, 3): {(3, 3): 0, (3, 2): 1, (0, 0): 8, (1, 0): 9, (0, 1): 7, (0, 2): 6, (0, 3): 5, (1, 3): 4, (0, 4): 6, (1, 4): 5, (0, 5): 7, (1, 1): 10, (1, 2): 3, (2, 2): 2, (2, 4): 4, (1, 5): 6, (2, 0): 6, (3, 0): 5, (2, 1): 3, (3, 1): 4, (2, 3): 3, (3, 4): 5, (2, 5): 5, (3, 5): 6}}

Используя pandas, я преобразовал словарь в фрейм данных:

df = pd.DataFrame(Y)
df.index = [*df.index]
df.columns = [*df.columns]
arraydf = df.to_numpy()

Это кадр данных, который я получаю:

        (0, 0)  (1, 0)  (0, 1)  (0, 2)  ...  (3, 4)  (2, 5)  (3, 5)  (3, 3)
(0, 0)       0       1       1       2  ...       9       9      10       8
(1, 0)       1       0       2       3  ...      10      10      11       9
(0, 1)       1       2       0       1  ...       8       8       9       7
(0, 2)       2       3       1       0  ...       7       7       8       6
(0, 3)       3       4       2       1  ...       6       6       7       5
(1, 3)       4       5       3       2  ...       5       5       6       4
(0, 4)      10      11       9       8  ...       3       3       4       6
(1, 4)       9      10       8       7  ...       2       2       3       5
(0, 5)      11      12      10       9  ...       4       4       5       7
(1, 1)       2       1       3       4  ...      11      11      12      10
(1, 2)       5       6       4       3  ...       4       4       5       3
(2, 2)       6       7       5       4  ...       3       3       4       2
(2, 4)       8       9       7       6  ...       1       1       2       4
(1, 5)      10      11       9       8  ...       3       3       4       6
(2, 0)      10      11       9       8  ...       7       7       8       6
(3, 0)       9      10       8       7  ...       6       6       7       5
(2, 1)       7       8       6       5  ...       4       4       5       3
(3, 1)       8       9       7       6  ...       5       5       6       4
(3, 2)       7       8       6       5  ...       4       4       5       1
(2, 3)       7       8       6       5  ...       2       2       3       3
(3, 4)       9      10       8       7  ...       0       2       3       5
(2, 5)       9      10       8       7  ...       2       0       1       5
(3, 5)      10      11       9       8  ...       3       1       0       6
(3, 3)       8       9       7       6  ...       5       5       6       0

Затем я конвертирую df в массив:

arraydf = df.to_numpy()

Теперь это мой результат:

[ 0  1  1  2  3  4 10  9 11  2  5  6  8 10 10  9  7  8  7  7  9  9 10  8]
[ 1  0  2  3  4  5 11 10 12  1  6  7  9 11 11 10  8  9  8  8 10 10 11  9]
[ 1  2  0  1  2  3  9  8 10  3  4  5  7  9  9  8  6  7  6  6  8  8  9  7]
[2 3 1 0 1 2 8 7 9 4 3 4 6 8 8 7 5 6 5 5 7 7 8 6]
[3 4 2 1 0 1 7 6 8 5 2 3 5 7 7 6 4 5 4 4 6 6 7 5]
[4 5 3 2 1 0 6 5 7 6 1 2 4 6 6 5 3 4 3 3 5 5 6 4]
[10 11  9  8  7  6  0  1  1 12  5  4  2  2  8  7  5  6  5  3  3  3  4  6]
[ 9 10  8  7  6  5  1  0  2 11  4  3  1  1  7  6  4  5  4  2  2  2  3  5]
[11 12 10  9  8  7  1  2  0 13  6  5  3  3  9  8  6  7  6  4  4  4  5  7]
[ 2  1  3  4  5  6 12 11 13  0  7  8 10 12 12 11  9 10  9  9 11 11 12 10]
[5 6 4 3 2 1 5 4 6 7 0 1 3 5 5 4 2 3 2 2 4 4 5 3]
[6 7 5 4 3 2 4 3 5 8 1 0 2 4 4 3 1 2 1 1 3 3 4 2]
[ 8  9  7  6  5  4  2  1  3 10  3  2  0  2  6  5  3  4  3  1  1  1  2  4]
[10 11  9  8  7  6  2  1  3 12  5  4  2  0  8  7  5  6  5  3  3  3  4  6]
[10 11  9  8  7  6  8  7  9 12  5  4  6  8  0  1  3  2  5  5  7  7  8  6]
[ 9 10  8  7  6  5  7  6  8 11  4  3  5  7  1  0  2  1  4  4  6  6  7  5]
[7 8 6 5 4 3 5 4 6 9 2 1 3 5 3 2 0 1 2 2 4 4 5 3]
[ 8  9  7  6  5  4  6  5  7 10  3  2  4  6  2  1  1  0  3  3  5  5  6  4]
[7 8 6 5 4 3 5 4 6 9 2 1 3 5 5 4 2 3 0 2 4 4 5 1]
[7 8 6 5 4 3 3 2 4 9 2 1 1 3 5 4 2 3 2 0 2 2 3 3]
[ 9 10  8  7  6  5  3  2  4 11  4  3  1  3  7  6  4  5  4  2  0  2  3  5]
[ 9 10  8  7  6  5  3  2  4 11  4  3  1  3  7  6  4  5  4  2  2  0  1  5]
[10 11  9  8  7  6  4  3  5 12  5  4  2  4  8  7  5  6  5  3  3  1  0  6]
[ 8  9  7  6  5  4  6  5  7 10  3  2  4  6  6  5  3  4  1  3  5  5  6  0]

Мой вопрос: Как сделать так, чтобы окончательный массив выглядел как матрица? Я хочу, чтобы все строки были одинаковой длины и были в правильном порядке (также имели "хорошие" читаемые столбцы)

РЕДАКТИРОВАТЬ: запрашиваемая информация:

arraydf.shape
(24, 24)

arraydf.dtype
int64

df.dtypes
(0, 0)    int64
(0, 1)    int64
(0, 2)    int64
(1, 2)    int64
(0, 3)    int64
(0, 4)    int64
(1, 4)    int64
(0, 5)    int64
(1, 5)    int64
(1, 0)    int64
(2, 0)    int64
(1, 1)    int64
(1, 3)    int64
(2, 3)    int64
(3, 0)    int64
(2, 1)    int64
(2, 2)    int64
(2, 4)    int64
(2, 5)    int64
(3, 5)    int64
(3, 1)    int64
(3, 2)    int64
(3, 3)    int64
(3, 4)    int64
dtype: object

df.info
<bound method DataFrame.info of         (0, 0)  (0, 1)  (0, 2)  (1, 2)  ...  (3, 1)  (3, 2)  (3, 3)  (3, 4)
(0, 0)       0       1       2       3  ...       8       9      10      11
(0, 1)       1       0       1       2  ...       7       8       9      10
(0, 2)       2       1       0       1  ...       6       7       8       9
(1, 2)       3       2       1       0  ...       5       6       7       8
(0, 3)       3       2       1       2  ...       7       8       9      10
(0, 4)       4       3       2       3  ...       8       9      10      11
(1, 4)       5       4       3       4  ...       9      10      11      12
(0, 5)       5       4       3       4  ...       9      10      11      12
(1, 5)       6       5       4       5  ...      10      11      12      13
(1, 0)       5       4       3       2  ...       3       4       5       6
(2, 0)       6       5       4       3  ...       2       3       4       5
(1, 1)       4       3       2       1  ...       4       5       6       7
(1, 3)       4       3       2       1  ...       6       7       8       9
(2, 3)       5       4       3       2  ...       7       8       9      10
(3, 0)       7       6       5       4  ...       1       2       3       4
(2, 1)       7       6       5       4  ...       3       4       5       6
(2, 2)       8       7       6       5  ...       4       5       6       7
(2, 4)      14      13      12      11  ...       6       5       4       3
(2, 5)      13      12      11      10  ...       5       4       3       2
(3, 5)      12      11      10       9  ...       4       3       2       1
(3, 1)       8       7       6       5  ...       0       1       2       3
(3, 2)       9       8       7       6  ...       1       0       1       2
(3, 3)      10       9       8       7  ...       2       1       0       1
(3, 4)      11      10       9       8  ...       3       2       1       0

Ответы [ 3 ]

3 голосов
/ 18 июня 2020

Если вы хотите печатать построчно и при этом все еще выровнять, вы можете сделать следующее:

>>> for l in str(df.to_numpy()).split("\n"):
...     print(l)
... 
[[ 0  1  1  2  3  4 10  9 11  2  5  6  8 10 10  9  7  8  7  7  9  9 10  8]
 [ 1  2  0  1  2  3  9  8 10  3  4  5  7  9  9  8  6  7  6  6  8  8  9  7]
 [ 2  3  1  0  1  2  8  7  9  4  3  4  6  8  8  7  5  6  5  5  7  7  8  6]
 [ 3  4  2  1  0  1  7  6  8  5  2  3  5  7  7  6  4  5  4  4  6  6  7  5]
...
0 голосов
/ 18 июня 2020

Если вы просто пытаетесь его увидеть, используйте

print(df)

Pandas, чтобы отобразить его, чтобы вы знали, как выглядят данные. Если вы используете jupyter, он будет отображаться в красивой таблице, поэтому мне нравится использовать блокнот jupyter при работе с фреймами данных / матрицами.

0 голосов
/ 18 июня 2020

Если вы пытаетесь сделать массив красивым, тогда pprint - ваш друг (см. эту прекрасную статью) .

...