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

numpy.random.permutationは、渡した配列の要素をランダムに並べ替える関数です。多次元配列を渡した場合は最初の軸だけを並べ替えます。

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

このページでは、random.permutation関数について解説していきます。

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

目次

1. 書式

numpy.random.permutation

書き方:

np.random.permutation(x)

パラメーター:

x: int or array_like
xが整数(int)の場合は、np.arange(x)の配列をランダムに並べ替える。xが配列の場合は、その配列をコピーして要素をランダムに並べ替える。

戻り値: 

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

一緒に確認したい関数:

  • Generator.permutation: ジェネレータメソッド。今後はrandom.permutationではなく、こちらを使うこと。
  • shuffle: 既存の配列の要素をランダムに並べ替える

2. サンプルコード

引数に整数を与えた場合は、np.arange(x)の配列の要素をランダムに並べ替えます。np.arangeは『numpy.arange – 色々な連番の配列を生成する』で解説しています。

In [1]:
import numpy as np
np.random.permutation(10)
# >>> np.arange(x)を渡すのと同じ
Out[1]:
array([2, 4, 0, 1, 7, 9, 3, 5, 8, 6])

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

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

多次元配列を渡した場合は、最初の軸に沿って並べ替えます。たとえば2次元配列を渡すと、行をランダムに並べ替えます。

In [3]:
# 2次元配列を渡すと行を並べ替える。
arr = np.arange(9).reshape((3, 3))
np.random.permutation(arr)
Out[3]:
array([[6, 7, 8],
       [0, 1, 2],
       [3, 4, 5]])

コードは書きませんが、3次元配列の場合は奥行きのみをランダムに並べ替えます。

なお、Generator.permutationではオプション引数 axis が追加され、多次元配列を渡した場合に、並べ替える軸を指定することが可能になっています。

3. まとめ

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

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

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

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

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

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

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

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

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

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

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



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

この記事を書いた人

コメント

コメントする

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

目次
閉じる