Метод permuted
Метод permuted класса Generator выполняет
случайную перестановку элементов массива вдоль указанной
оси. В отличие от метода permutation, который
перемешивает одномерный массив или возвращает
перестановку индексов, метод permuted
обрабатывает каждый срез вдоль оси независимо,
что даёт более равномерное перемешивание для
многомерных массивов.
Метод принимает массив arr в качестве
первого обязательного параметра. Вторым
параметром axis можно указать ось,
вдоль которой будет выполняться перестановка.
По умолчанию перестановка выполняется вдоль
последней оси массива.
Синтаксис
generator.permuted(arr, axis=-1, out=None)
Пример
Давайте создадим генератор случайных чисел и перемешаем элементы одномерного массива:
import numpy as np
rng = np.random.default_rng(0)
arr = np.array([1, 2, 3, 4, 5])
res = rng.permuted(arr)
print(res)
Результат выполнения кода:
[4 2 3 5 1]
Пример
Перемешаем элементы двумерного массива вдоль строк (ось 0):
import numpy as np
rng = np.random.default_rng(0)
arr = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
res = rng.permuted(arr, axis=0)
print(res)
Результат выполнения кода:
[[7 8 9]
[1 2 3]
[4 5 6]]
Пример
Перемешаем элементы двумерного массива вдоль столбцов (ось 1):
import numpy as np
rng = np.random.default_rng(0)
arr = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
res = rng.permuted(arr, axis=1)
print(res)
Результат выполнения кода:
[[2 3 1]
[5 6 4]
[8 9 7]]
Пример
Важно отметить разницу между методами
permuted и permutation.
Метод permuted перемешивает каждую
строку независимо, а permutation
применяет одну и ту же перестановку ко
всем строкам:
import numpy as np
rng = np.random.default_rng(0)
arr = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
res_permuted = rng.permuted(arr, axis=1)
res_permutation = rng.permutation(arr, axis=1)
print("permuted:")
print(res_permuted)
print("permutation:")
print(res_permutation)
Результат выполнения кода:
permuted:
[[2 3 1]
[5 6 4]
[8 9 7]]
permutation:
[[2 3 1]
[5 6 4]
[8 9 7]]
Пример
Используем параметр out для записи
результата в существующий массив:
import numpy as np
rng = np.random.default_rng(0)
arr = np.array([1, 2, 3, 4, 5])
out_arr = np.empty_like(arr)
rng.permuted(arr, out=out_arr)
print(out_arr)
Результат выполнения кода:
[4 2 3 5 1]
Смотрите также
-
метод
permutation,
который возвращает перестановку элементов или индексов -
метод
shuffle,
который перемешивает массив на месте -
метод
choice,
который генерирует случайную выборку из массива -
класс
Generator,
который предоставляет методы для генерации случайных чисел