Generator.permutation – 既存の配列の要素をランダムに並べ替えた新しい配列を生成

Generator.permutationは、NumPyのrandomモジュールで、既存の配列の要素をランダムに並べ替えた新しい配列を生成するためのジェネレータメソッドです。

これと同じ操作は、NumPyのversion1.17までは random.permutation関数で行っていました。しかし現在では、default_rng で作成したインスタンス(「ジェネレータオブジェクト」とも言う)に対して、Generator.permutationメソッドを呼び出すことで行うようになりました。

なお、default_rng については、『numpy.random.default_rng – 乱数生成のためのジェネレータオブジェクトの作成』で解説しているので確認しておいて下さい。

このページでは、このGenerator.permutationの使い方を解説します。こちらの方が従来の関数を使った乱数生成よりも大幅に高速で、大量のデータを扱う科学技術計算に適していますので、ぜひ抑えておきましょう。

目次

1. 書式

Generator.permutation

書き方:

Generator.permutation(x, axis=0)

パラメーター:

x: int or array_like
xが整数(int)の場合は、np.arange(x)の配列をランダムに並べ替える。xが配列の場合は、その配列をコピーして要素をランダムに並べ替える。
axis: int, optional
配列を並べ替える軸を指定する。デフォルト値は0。

戻り値: 

out: ndarray
要素を並べ替えた配列

一緒に確認したい関数:

2. サンプルコード

ジェネレータメソッドは、すべて default_rng で作成したインスタンスに対して使用します。これについては、以下のページで解説しています。

インスタンスの作成は、以下のコードのように、任意の変数にdefault_rng を代入することで行います。

In [1]:
import numpy as np
rng = np.random.default_rng()
rng
Out[1]:
Generator(PCG64) at 0x7FE45029E408

これで、ジェネレータオブジェクトの rng が作成されました。このジェネレータオブジェクト rng に対して permutation メソッドを使います。

それではサンプルコードを見ていきましょう。

第一引数 x に並べ替える配列を渡す

第一引数に整数(int)を渡すと、np.arange(x)を渡しのと同じことになります。np.arangeは『numpy.arange – 色々な連番の配列を生成する』で解説しています。

In [1]:
import numpy as np
rng = np.random.default_rng()
rng.permutation(10)
Out[1]:
array([2, 4, 0, 9, 3, 8, 1, 7, 6, 5])

リストやタプルなどの配列オブジェクト(array_like)を渡すこともできます。

In [2]:
rng.permutation([1, 3, 5, 7, 11, 13])
Out[2]:
array([ 5, 11, 13,  3,  1,  7])

axis の指定

オプション引数 axis では、多次元配列を渡した場合に、並べ替えの軸を指定することができます。デフォルトでは最初の軸(axis=0)で並べ替えます。

具体的には、以下のように行を並べ替えます。

In [3]:
arr = np.arange(9).reshape((3, 3))
rng.permutation(arr)
Out[3]:
array([[3, 4, 5],
       [6, 7, 8],
       [0, 1, 2]])

オプション引数で axis= 1を指定すると、列を並べ替えます。

In [4]:
rng.permutation(arr, axis=1)
Out[4]:
array([[2, 0, 1],
       [5, 3, 4],
       [8, 6, 7]])

もちろん3次元配列以上でも、axis を指定することによって、並べ替えの軸を操作することが可能です。

3. まとめ

以上が Generator.permutationの使い方です。これまでは、同じ操作をするのに、numpy.random.permutation関数が使われてきましたが、これからはこの Generator.permutationを使うようにしていきましょう。

Python初心者におすすめのプログラミングスクール

「未経験からでもPythonを学べるプログラミングスクールを探しているけど、色々ありすぎてわからない」なら、次の3つのプログラミングスクールから選んでおけば間違いはありません。

Aidemy Premium:全くの初心者ができるだけ効率よく短期間で実務的に活躍できるAI人材になることを目的とした講座。キャリアカウンセリングや転職エージェントの紹介などの転職支援も充実しており、受講者の転職成功率が高い。

AIジョブカレPythonの基本をおさえた人が、実際に機械学習やディープラーニングを活用できるようになるための講座。転職補償型があるなどキャリア支援の内容が非常に手厚く、講師の質も最高クラス。コスパ最高。Python初心者用の対策講座もある。

データミックスプログラミング経験者のビジネスマンが、更なるキャリアアップのためにデータの処理方法を学んでデータサイエンティストになるための講座。転職だけでなく起業やフリーランスとして独立する人も多い。Python初心者用の対策講座もある。

特に、あなたが以下のような目標を持っているなら、この中から選んでおけば間違いはないでしょう。

・未経験からPythonエンジニアとして就職・転職したい
・AIエンジニアやデータサイエンティストとしてキャリアアップしたい
・起業やフリーランスを視野に入れたい

理由は「Python初心者のためのおすすめプログラミングスクール3選」で解説しています。



よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次
閉じる