J'essaye d'imprimer mon dataframe sous forme de matrice. Pour ce faire, je souhaite utiliser un tableau. Pour être clair:

J'ai un dictionnaire, Y, qui ressemble à ceci:

{(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}}

En utilisant des pandas, j'ai converti le dictionnaire en dataframe:

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

Voici le dataframe que j'obtiens:

        (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

Ensuite, je convertis le df en tableau:

arraydf = df.to_numpy()

Voici ma sortie maintenant:

[ 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]

Ma question est la suivante: Comment puis-je faire en sorte que le tableau final ressemble à une matrice? Je veux que toutes les lignes de la même longueur soient dans le bon ordre (avoir de «belles» colonnes lisibles également)

EDIT: infos demandées:

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
1
hellomynameisA 18 juin 2020 à 04:05

3 réponses

Meilleure réponse

Si vous souhaitez imprimer ligne par ligne tout en alignant les éléments, vous pouvez effectuer les opérations suivantes:

>>> 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]
...
2
Paul Panzer 18 juin 2020 à 03:35

Si vous essayez simplement de le voir, utilisez

print(df)

Les pandas l'afficheront pour que vous sachiez à quoi ressemblent les données. Si vous utilisez jupyter, il s'affichera dans une table sophistiquée, c'est pourquoi j'aime utiliser un notebook jupyter lorsque vous travaillez avec des trames / matrices de données.

0
Colton Neary 18 juin 2020 à 03:43

Si vous essayez de rendre le tableau agréable, alors pprint est votre ami (voir cet bel article).

0
Igor Rivin 18 juin 2020 à 01:24