Generator.shuffle – 既存の配列の要素をランダムに並べ替え

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

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

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

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

目次

1. 書式

Generator.shuffle

書き方:

Generator.shuffle(x, axis=0)

パラメーター:

x: array_like
シャッフルする配列やリストを渡す。
axis: int, optional
配列の要素をどの軸で並べ替えるかを指定する。デフォルト値は0。xに配列を渡した時のみ使用可能。

戻り値: 

None

一緒に確認したい関数:

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

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 に対して shuffle メソッドを使います。

それでは確認していきましょう。

以下のコードのように、shuffleは、引数に渡した配列そのものの要素の並びをランダムに並べ替えます。なお、コード中のnp.arange関数については『numpy.arange – 色々な連番の配列を生成する』で解説しています。

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

オプション引数 axis の指定

Generator.shuffleでは、多次元配列を渡した時に、オプション引数 axis= で要素を並べ替える軸を指定することができます。これは、random.shuffle関数にはなかった機能です。

まず、デフォルト値は axis=0 なので、2次元配列をそのまま渡すと行をランダムに並べ替えます。なお、コード中で使っているreshapeメソッドについては『numpy.reshape – 配列の形状(shape)を変換』で解説しています。

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

axis=1 を指定すると列をランダムに並べ替えます。

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

3. まとめ

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

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

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

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

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

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

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

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

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



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

この記事を書いた人

コメント

コメントする

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

目次
閉じる