

どなたか、Numpyでランダムに配列の値を変更する方法を教えて頂けないでしょうか。  
例えば5×5の配列があったとして、25個の要素のうちランダムな10個の値を0にするプログラムを書きたいです。  
どなたか教えて頂けないでしょうか。よろしくお願いします。


CC BY-SA 4.0
2019-10-15T07:29:04.400
59718
2019-10-15T09:19:42.093
34814
question
python
Numpyでランダムに配列の値を変更する方法について


単純に `numpy.random.choice()` などで重複のない10個のIndex値を乱数にて生成し、  
`numpy.put()` などで、そのIndex値に該当する要素を 0 にするだけではないでしょうか。

[code]

    import numpy as np
    
    # 5x5の配列を生成
    arr = np.arange(1, 26).reshape(5,5)
    # 乱数で10個の値を生成（重複なし）
    p = np.random.choice(25, 10, replace=False)
    # 上記のIndexに相当する要素を0に変更
    np.put(arr, p, 0)
    print(arr)
    #[[ 0  2  0  4  0]
    # [ 6  7  8  0  0]
    # [ 0  0 13 14  0]
    # [16 17 18  0 20]
    # [21 22 23 24  0]]
    
[/code]

<https://docs.scipy.org/doc/numpy-1.15.1/reference/generated/numpy.random.choice.html>  
<https://docs.scipy.org/doc/numpy/reference/generated/numpy.put.html>


CC BY-SA 4.0
2019-10-15T08:52:51.440
59721
2019-10-15T08:52:51.440
24801
59718
answer