NumPy 中的 numpy.random.permutation() 函式

Muhammad Maisam Abbas 2021年7月4日
NumPy 中的 numpy.random.permutation() 函式

本教程將介紹在 Python 中升級 NumPy 包的方法。

NumPy 隨機排列與 Python 中的 numpy.random.permutation() 函式

numpy.random.permutation() 函式主要用於兩個目的:獲取序列的隨機排列副本和在 Python 中獲取隨機排列的範圍。permutation()shuffle() 函式之間的主要區別在於,如果傳遞一個陣列,permutation() 函式返回原始陣列的無序副本。相比之下,shuffle() 函式會打亂原始陣列。而且,如果我們傳遞一個整數,permutation() 函式會為我們提供具有給定長度的隨機排列的數字序列,而要執行相同的過程,我們需要使用 numpy.arange() 函式和 shuffle() 函式。以下程式碼示例演示了 Python 中 permutation() 函式和 shuffle() 函式之間的區別。

示例#1:

import numpy as np
array = np.array([0,1,0,0,4])
shuffled = np.random.permutation(array)
np.random.shuffle(array)
print(shuffled)
print(array)

輸出:

[0 0 4 1 0]
[0 4 0 1 0]

示例#2:

permuted = np.random.permutation(5)
print(permuted)
sequence = np.arange(5)
np.random.shuffle(sequence)
print(sequence)

輸出:

[3 1 4 0 2]
[4 3 0 1 2]

在第一個示例中,我們演示了將陣列傳遞給兩個函式時 permutation() 函式和 shuffle() 函式之間的區別。permutation() 函式返回 array 的混洗副本,而 shuffle() 函式則對原始 array 進行混洗。

在第二個示例中,我們演示了傳遞整數時 permutation() 函式和 shuffle() 函式之間的區別。permutation(n) 函式返回一個帶有 n 個整數元素序列的混洗陣列,而要使用 shuffle() 函式模仿這種行為,我們必須首先建立一個 n 個整數序列,其中 np.arange() 函式。shuffle() 函式然後對這個新建立的整數元素序列進行打亂。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn