У меня есть большой массив np, называемый X (размер: 32000), заполненный дублирующимися значениями 0, 1, 2, 3
. Я хочу заменить каждое из значений (0, 1, 2, 3) перестановками следующих чисел: 0, 1, 2, 3, 4, 5
Например, 0, 1, 2, 3
можно заменить следующим:
1, 5, 3, 4
5, 2, 4, 3
0, 5, 1, 4
и т.д. (всего 360 таких перестановок)
Как я могу взять каждую из 360 перестановок и заменить 32000 значений в X соответственно, так что, наконец, у меня есть 360 версий X для каждой перестановки?
Вы можете попробовать метод numpy.choose
:
import numpy as np
x = np.array([0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3,])
perm = [1, 5, 3, 4,]
x = np.choose(x, perm)
np.choose(x, perm) выберет значение из perm для каждого значения x, взяв x как список индексов. Я рекомендую посмотреть документацию, так как эта функция может привести к путанице.
X
?