python случайных столбцов в матрице - PullRequest
1 голос
/ 20 марта 2020

Есть ли способ случайной перестановки столбцов матрицы? Я пытался использовать np.random.permutation, но полученный результат не то, что мне нужно. Я хотел бы получить случайное изменение положения столбцов матрицы без изменения положения значений каждого столбца.

Es.

начальная матрица:

1   6   11  16
2   7   12  17
3   8   13  18
4   9   14  19
5   10  15  20

Результирующая матрица

11  7   1  16
12  8   2  17
13  9   3  18
14  10  4  19
15  11  5  20

1 Ответ

5 голосов
/ 20 марта 2020

Вы можете перемешать транспонированный массив:

q = np.array([1, 6, 11, 16, 2, 7, 12, 17, 3, 8, 13, 18, 4, 9, 14, 19, 5, 10, 15, 20])
q = q.reshape((5,4))

print(q)
# [[ 1  6 11 16]
# [ 2  7 12 17]
# [ 3  8 13 18]
# [ 4  9 14 19]
# [ 5 10 15 20]]    
np.random.shuffle(np.transpose(q))

print(q)
# [[ 1 16  6 11]
# [ 2 17  7 12]
# [ 3 18  8 13]
# [ 4 19  9 14]
# [ 5 20 10 15]]

Другой вариант для общей оси:

q = np.array([1, 6, 11, 16, 2, 7, 12, 17, 3, 8, 13, 18, 4, 9, 14, 19, 5, 10, 15, 20])
q = q.reshape((5,4))
q = q[:, np.random.permutation(q.shape[1])]

print(q)
# [[ 6 11 16  1]
# [ 7 12 17  2]
# [ 8 13 18  3]
# [ 9 14 19  4]
# [10 15 20  5]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...