Как я могу получить перестановку данных индексов? - PullRequest
3 голосов
/ 23 июня 2011

У меня есть список объектов:

array = [object0,object1,object2,object3,object4]

и я хочу изменить порядок элементов при перестановке:

permutation = [ 2 , 4 , 0 , 1 , 3 ]

Есть ли в python команда, которая будет делать что-то вроде:

result = Permute(array,permutation)

result = [object2,object4,object0,object1,object3]

Я знаю, что могу сделать это с помощью простой for петли ....

Ответы [ 4 ]

5 голосов
/ 23 июня 2011

Если мы предполагаем, что permutation является правильной перестановкой 0-n (каждый появляется ровно один раз), то следующий код должен работать:

result=[array[i] for i in permutation]
4 голосов
/ 23 июня 2011

В Python это легко сделать с помощью списка :

result = [array[i] for i in permutation]
3 голосов
/ 23 июня 2011

Просто для полноты версии без для вообще:

seed = ['foo', 'bar', 'baz']
permutation = [1, 2, 0]
result = map(lambda i: seed[i], permutation)
print result # --> ['bar', 'baz', 'foo']

Хотя я бы предпочел придерживаться парней, понимающих список.;)

0 голосов
/ 11 февраля 2019

Использовать метод случайного воспроизведения от numpy

import numpy as np
arr = np.arange(10)
np.random.shuffle(arr)
print(arr)

[1 7 5 2 9 4 3 6 0 8]

Ссылка: https://docs.scipy.org/doc/numpy-1.15.0/reference/generated/numpy.random.shuffle.html

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