2017-10-19 22 views
1

文字列と整数の両方を含むリストでnp.random.choiceを使用すると、整数が返されると文字列に変換されることに気付きました。これは意図された動作ですか?np.random.choiceは強制的に強制されますか?

>>>numpy.random.choice([1,2,3,4]) 1

しかし

>>>numpy.random.choice(['a',1,2,3,4]) '1'

私はmy_list[np.random.choice(range(len(my_list)))]を行うことができますね、それはかなり醜いようです。

+2

'size> 1'を指定すると、一様な配列を返さなければならないので、選択する前にすべてを共通の型に変換する必要があると思います。 – Barmar

+1

'numpy'の代わりに通常の' random.choice'を使用すると、これは起こりますか? – Barmar

+1

NumPyは、同じ型の要素を持つ固定配列を扱うことを望んでいるので、確かに強制することになっています。それが存在する理由です。通常、 'numpy.random.choice'は配列に対して動作します。それ以外の場合は、先に進む前に入力を配列に変換します。それはここで何が起こるかです。 – Evert

答えて

0

これはランダムな選択に固有のものではありません。 NumPyメソッドはNumPy配列で動作し、Pythonリストが与えられていれば、それ以外の処理を行う前に配列に変換します。変換結果は次のようになります。

>>> np.array(['a', 1, 2, 3, 4]) 
array(['a', '1', '2', '3', '4'], 
     dtype='<U1') 

1文字のUnicode文字列の配列。選択はこの配列から行われます。

関連する問題