РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
485 of 541 menu

Метод permutation

Метод permutation класса Generator создает случайную перестановку элементов переданного массива или возвращает перемешанный диапазон чисел от нуля до заданного значения. Метод принимает один обязательный параметр - объект, который нужно перемешать (массив, список, кортеж или целое число). Важно, что метод возвращает новый перемешанный массив и не изменяет исходный объект.

Синтаксис

rng.permutation(x)

Параметр x может быть целым числом (тогда возвращается перемешанный диапазон от 0 до x-1), одномерным массивом, списком или кортежем. Метод возвращает новый массив NumPy с перемешанными элементами.

Пример с целым числом

Давайте создадим генератор с фиксированным зерном и получим перестановку чисел от 0 до 9:

import numpy as np rng = np.random.default_rng(42) arr = rng.permutation(10) print(arr)

Результат выполнения кода:

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

Обратите внимание, что каждый вызов метода с одинаковым зерном дает одинаковый результат, что полезно для воспроизводимости экспериментов.

Пример с массивом

Давайте создадим массив чисел и получим его случайную перестановку:

import numpy as np rng = np.random.default_rng(42) original = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) arr = rng.permutation(original) print("Исходный массив:", original) print("Перемешанный:", arr)

Результат выполнения кода:

"Исходный массив: [ 1 2 3 4 5 6 7 8 9 10]" "Перемешанный: [ 8 2 6 1 7 3 10 5 4 9]"

Метод создает новый массив, не изменяя исходный.

Пример со списком

Метод может принимать не только массивы NumPy, но и обычные списки Python:

import numpy as np rng = np.random.default_rng(123) my_list = ['a', 'b', 'c', 'd', 'e'] arr = rng.permutation(my_list) print(arr)

Результат выполнения кода:

['e' 'c' 'a' 'd' 'b']

В результате возвращается массив NumPy со строками в случайном порядке.

Пример с многомерным массивом

При передаче многомерного массива метод переставляет только первую ось (строки), оставляя внутреннюю структуру неизменной:

import numpy as np rng = np.random.default_rng(5) original = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) arr = rng.permutation(original) print("Исходный массив:") print(original) print("Перемешанный:") print(arr)

Результат выполнения кода:

"Исходный массив:" [[1 2 3] [4 5 6] [7 8 9]] "Перемешанный:" [[7 8 9] [4 5 6] [1 2 3]]

Как видите, строки массива были перемешаны, но элементы внутри каждой строки сохранили свой порядок.

Отличие от метода shuffle

В отличие от метода shuffle, который изменяет массив на месте и ничего не возвращает, метод permutation всегда создает новый массив:

import numpy as np rng = np.random.default_rng(1) arr = np.array([1, 2, 3, 4, 5]) # permutation создает новый массив permuted = rng.permutation(arr) print("После permutation:", permuted) print("Исходный массив:", arr) # shuffle изменяет массив на месте rng.shuffle(arr) print("После shuffle:", arr)

Результат выполнения кода:

"После permutation: [3 5 1 2 4]" "Исходный массив: [1 2 3 4 5]" "После shuffle: [3 5 1 2 4]"

Если вам нужно сохранить исходный массив, используйте метод permutation. Если же изменение оригинала допустимо, то метод shuffle будет более эффективным по памяти.

Смотрите также

  • класс Generator,
    который предоставляет методы для генерации случайных чисел
  • метод shuffle,
    который перемешивает массив на месте
  • метод permuted,
    который перемешивает элементы вдоль заданной оси
  • метод choice,
    который генерирует случайную выборку из массива
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить