Замена значений в массиве Numpy на основе перестановок

1

У меня есть большой массив 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 для каждой перестановки?

  • 0
    Сам процесс картирования довольно прост, но ваш вопрос не совсем понятен. Создает ли этот процесс замены 360 новых массивов, или вы просто хотите создать новую из 360 модификаций на каждой итерации цикла? Кроме того, какова форма X ?
  • 0
    X является 1d массивом с 32000 значениями. Каждое из значений равно 0,1,2 или 3. Я пытаюсь создать 360 новых версий X, соответствующих каждой перестановке.
Показать ещё 7 комментариев
Теги:
arrays
numpy

1 ответ

1

Вы можете попробовать метод 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 как список индексов. Я рекомендую посмотреть документацию, так как эта функция может привести к путанице.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню