當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python NumPy Random Generator permutation方法用法及代碼示例


NumPy 隨機生成器的 permutation(~) 方法返回一個新數組,其中的值已打亂。

注意

要就地打亂值,請使用 shuffle(~)

此外, permutation(~) permuted(~) 之間的區別在於,前者對二維數組的行或列進行打亂,但 permuted(~) 獨立於其他行或列對值進行打亂。請參閱下麵的示例以進行說明。

參數

1.x | intarray-like

  • 如果 xint ,則隨機打亂並返回 np.arange(x)

  • 如果 xarray-like ,則返回一個具有隨機打亂值的新數組。

2. axis | int | optional

執行洗牌的軸。默認情況下,axis=0

返回值

NumPy 數組。

例子

傳遞一個整數

要獲取 [0,1,2,3,4] 的打亂數組:

import numpy as np
rng = np.random.default_rng(seed=42)
rng.permutation(5)



array([4, 2, 3, 1, 0])

請注意,這相當於 rng.permutation(np.arange(5))

傳入一個數組

隨機打亂數字數組:

rng = np.random.default_rng(seed=42)
rng.permutation([5,2,6,1])



array([1, 6, 2, 5])

請注意,打亂一維數組時,行為與 permuted(~) 完全相同。

設定軸

考慮以下二維數組:

x = np.arange(12).reshape((3,4))
x



array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
打亂行順序

默認情況下, axis=0 ,這意味著行被隨機打亂(在二維數組中):

rng = np.random.default_rng(seed=42)
rng.permutation(x)   # axis=0



array([[ 8,  9, 10, 11],
       [ 4,  5,  6,  7],
       [ 0,  1,  2,  3]])
洗牌列

隨機打亂二維數組的列:

rng = np.random.default_rng(seed=42)
rng.permutation(x, axis=1)



array([[ 3,  2,  1,  0],
       [ 7,  6,  5,  4],
       [11, 10,  9,  8]])

相關用法


注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 NumPy Random Generator | permutation method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。