89268


現在、python, numpy で作った10 x 10の配列のうち、行の要素7つをランダムに0に置換する方法を探しています。

もし知見をお持ちの方がいらっしゃいましたら、ご教授いただけないでしょうか？  
お手数をおかけしますが、宜しくお願い致します。

### イメージ

**元のデータ:**

[code]

    [[1,2,3,4,5,6,7,8,9,10],
    [1,2,3,4,5,6,7,8,9,10],
    [1,2,3,4,5,6,7,8,9,10],
    .
    .
    .
    [1,2,3,4,5,6,7,8,9,10]]
    
[/code]

**置換後のデータ:**

[code]

    [[1,0,0,4,0,6,0,0,0,0],
    [0,2,3,4,0,0,0,0,0,0],
    [0,0,3,0,5,0,0,0,9,0],
    [0,0,3,0,0,0,7,8,0,0],
    .
    .
    .
    [0,2,0,0,0,0,0,0,9,10]]
    
[/code]


CC BY-SA 4.0
2022-06-07T03:17:51.063
89266
2022-06-07T12:35:34.920
2022-06-07T05:57:35.340
3060
52968
question
python numpy random
Numpy で行の値をランダムに置換したい

[code]

    import numpy as np
    
    N, M = 10, 7
    arr = np.tile(range(1, N+1), (N, 1))
    idx = np.random.rand(N, N).argsort(axis=-1)
    arr[idx < M] = 0
    
    print(arr)
    
    #
    [[ 0  0  0  0  5  0  7  0  0 10]
     [ 0  2  3  0  0  0  0  0  0 10]
     [ 1  0  0  0  5  6  0  0  0  0]
     [ 1  2  0  0  0  6  0  0  0  0]
     [ 0  0  0  4  5  0  7  0  0  0]
     [ 0  2  0  0  0  6  7  0  0  0]
     [ 1  0  0  0  0  6  0  8  0  0]
     [ 0  2  0  0  0  0  7  0  0 10]
     [ 0  2  0  0  5  6  0  0  0  0]
     [ 0  0  0  0  0  6  7  8  0  0]]
    
[/code]


CC BY-SA 4.0
2022-06-07T04:15:34.867
89268
2022-06-07T12:35:34.920
2022-06-07T12:35:34.920
47127
47127
89266
answer