1. ホーム
  2. python

[解決済み] シャッフル vs パミュート numpy

2023-02-19 16:43:20

質問

とはどのような違いがあるのでしょうか? numpy.random.shuffle(x)numpy.random.permutation(x) ?

ドキュメントページを読みましたが、配列の要素をランダムにシャッフルしたいだけなのに、この2つに違いがあるのか理解できませんでした。

より正確には、私が配列 x=[1,4,2,8] .

x のランダムな並べ替えを生成したい場合、次のような違いがあるのでしょうか。 shuffle(x)permutation(x) ?

どのように解決するのですか?

np.random.permutation とは2つの違いがあります。 np.random.shuffle :

  • 配列が渡された場合、シャッフルされた コピー を返します。 np.random.shuffle 配列のシャッフルを行います。
  • 整数を渡すと、シャッフルされた範囲、つまり np.random.shuffle(np.arange(n))
<ブロッククオート

xが整数の場合、np.arange(x)をランダムに並べ替えます。x が配列の場合、コピーを作成し、要素をランダムにシャッフルします。

ソースコードで理解できるかもしれません。

3280        def permutation(self, object x):
...
3307            if isinstance(x, (int, np.integer)):
3308                arr = np.arange(x)
3309            else:
3310                arr = np.array(x)
3311            self.shuffle(arr)
3312            return arr