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

numpy.random.shuffleは、渡した配列の要素をランダムに並べ替える関数です。

同じような関数に、numpy.random.permutationがあります。両者の違いは、shuffleは引数に渡した配列の要素を並べ替えるのに対して、permutationは渡した配列の要素を並べ替えた新しい配列を生成する点にあります。

このページではshuffleについて解説します。

重要
NumPyのversion1.17以降は、乱数操作には、関数は使わずにジェネレータメソッドを使うようになりました。最大の理由は、ジェネレータから乱数を生成する方が遥かに高速であり、科学技術計算に適しているからです。そのため、現在はrandom.shuffle関数の使用は推奨されておらず、代わりにGenerator.shuffleを使います。『Generator.shuffle – 既存の配列の要素をランダムに並べ替え』で解説しています。

目次

1. 書式

numpy.random.shuffle

書き方:

np.random.shuffle(x)

パラメーター:

x: array_like
シャッフルする配列やリストを渡す。

戻り値: 

None

一緒に確認したい関数:

  • Generator.shuffle: ジェネレータメソッド。今後はrandom.shuffleではなく、こちらを使うこと。
  • permutation: 渡した配列の要素を並べ替えた新しい配列を生成

2. サンプルコード

random.shuffle関数に配列を渡すと、渡した配列の要素をランダムに並べ替えます。

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

上のコードの中で使っているnp.arange関数は『numpy.arange – 色々な連番の配列を生成する』で解説しています。

多次元配列の場合は、最初の軸(axis=0)に沿って並べ替えます。

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

random.shuffle関数では要素を並べ替える軸を指定することはできませんが、後述するGenerator.shuffleではそれが可能になっています。

なお、上のコードの中で使っているndarray.reshapeメソッドについては『numpy.reshape – 配列の形状(shape)を変換』で解説しています。

3. まとめ

以上、numpy.random.shuffleは、配列の要素をランダムに並べ替える関数です。現在は、この関数は使わず、Generator.shuffleというジェネレータメソッドを使います。

このような変更が行われた最大の理由は、処理の高速化にあります。科学技術計算では、大量のデータを扱うため高速性が必須なのです。

今後は、Generator.shuffleで一本化するようにしましょう。

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

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

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

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

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

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

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

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



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

この記事を書いた人

コメント

コメントする

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

目次
閉じる