【Python】配列を指定した順番で並べ替える方法!シャッフルも可能!

このページでは、Python上で配列を任意の順番に並び替える方法をご紹介していきます。

このスキルを応用することで、配列を適当にシャッフルすることも可能です。

AIの教師データ作成の際などに使えるスキルですので、ぜひやり方をマスターしておきましょう。

 

それではさっそくやっていきましょう!

 

スポンサーリンク

配列を任意の順番に並び替える方法

配列を並び替える方法は以下の通りです。

 

並び替え後配列=並び替え前配列 [ [順番指定] ]

とはいえ、これだけではよくわからないと思いますので、実列を紹介します。

 

スポンサーリンク

配列並び替えのサンプルコード

では、先ほど紹介したスキルを実際に使用してみましょう。

以下がそのサンプルコードです。

import numpy as np
a=np.array([[1,2,3],
            [4,5,6],
            [7,8,9]])
b=[2,1,0]
c=a[b]
#c=a[[2,1,0]]でも同じこと
print(c)

 

こいつを実行すると配列cが以下のように出力されました。

並び替えた後の配列を出力した結果

先ほどのコードでやっていることとしては、配列aを2番目、1番目、0番目の順番に並べ替えろ、という指示を行っていますので、問題なく順番が入れ替わっていることがわかりますね。

 

別パターンで実行してみましょう。

import numpy as np
a=np.array([[1,2,3],
            [4,5,6],
            [7,8,9]])
b=[1,0,2]
c=a[b]
#c=a[[1,0,2]]でも同じこと
print(c)

 

こいつを実行すると今度は以下の結果が出力されました。

並び替えた後の配列を出力した結果
こちらも問題なしですね。

 

というわけで、配列並べ替えの方法は理解できたと思います。

 

次はAIでよく使うシャッフルをやってみましょう。

 

スポンサーリンク

配列の順番をランダムにシャッフルする方法

先ほどのスキルを応用し、順番を指定する変数( b ) をランダムに生成できれば配列をシャッフルできるはずです。

 

というわけでまずは0から配列の要素数までの数値をランダムに被ることなく生成する方法をご紹介します。

 

以下がその方法です。

※a がシャッフルしたい配列変数です。randomをimportしておく必要があります。

shaffle_list=random.sample(range(0,len(a)),len(a))

 

こいつを使って配列をシャッフルするとこんな感じですね。

※cがシャッフル後の配列

c=a[shaffle_list]

まぁやっていることはさっきと同じですね。

 

スポンサーリンク

配列シャッフルのサンプルコード

とはいえここも実例があったほうがわかりやすいと思いますので、実演してみましょう。

 

以下がそのサンプルコードです。

import numpy as np
import random
a=np.array([[1,2,3],
            [4,5,6],
            [7,8,9],
            [-1,-2,-3],
            [-4,-5,-6],
            [-7,-8,-9]])
shaffle_list=random.sample(range(0,len(a)),len(a))
print(shaffle_list)
c=a[shaffle_list]
print(c)

 

以下が実行結果です。

まずはprint(shaffle_list)の結果です。

シャッフル用のリストを作成した結果

問題なく配列の要素数分のリストが被ることなく生成されていますね。

 

次はprint(c)の結果です。

シャッフルした後の配列を出力した結果

こちらも問題なく順番が入れ替わっていますね。

 

複数回実行してみると毎回違う結果が出力されるはずですので、試してみましょう。

 

スポンサーリンク

おわりに

というわけで今回はpython上の配列を任意の順番に並び変えたりランダムにシャッフルする方法をご紹介しました。

AIの教師データ作成の際などにぜひご活用ください。

 

このように、私のブログでは様々なスキルを紹介しています。

過去記事一覧

 

今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。
⇒興味をもった方は【ヒガサラ】で検索してみてください。

確実にスキルアップできるはずです。

 

最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
にほんブログ村 IT技術ブログへ
にほんブログ村

それではまた!

コメント

タイトルとURLをコピーしました