Как работает Python List Slicing X [:, перестановка] - PullRequest
0 голосов
/ 15 марта 2020

Не совсем уверен, что происходит в [:, перестановке] этой точки.

permutation = list(np.random.permutation(m))
#print(permutation)
shuffled_X = X[:, permutation]
#print(shuffled_X.shape)
shuffled_Y = Y[:, permutation].reshape((1,m))

1 Ответ

0 голосов
/ 16 марта 2020

Предполагая, что X - это просто двумерный массив размером m x m

X[permutation, :] # permutes the rows of X
X[:, permutation] # permutes the columns of X
X[:, permutation].reshape((1, m**2)) # permutes the columns of X, and reorders X into a row vector
>>> import numpy as np
>>> m = 5
>>> permutation = list(np.random.permutation(m))
>>> permutation
[3, 2, 4, 0, 1] 
# new row 0 is old row 3
# new row 1 is old row 2
# new row 2 is old row 4
# new row 3 is old row 0
# new row 4 is old row 1
>>> X = np.arange(m**2).reshape((m,m))
>>> X
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19],
       [20, 21, 22, 23, 24]])
>>> X[permutation,:]
array([[15, 16, 17, 18, 19],
       [10, 11, 12, 13, 14],
       [20, 21, 22, 23, 24],
       [ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9]])
>>> X[:,permutation]
array([[ 3,  2,  4,  0,  1],
       [ 8,  7,  9,  5,  6],
       [13, 12, 14, 10, 11],
       [18, 17, 19, 15, 16],
       [23, 22, 24, 20, 21]])
>>> X[:,permutation].reshape((1,m**2))
array([[ 3,  2,  4,  0,  1,  8,  7,  9,  5,  6, 13, 12, 14, 10, 11, 18,
        17, 19, 15, 16, 23, 22, 24, 20, 21]])```

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...