How to randomly set elements in numpy array to 0

后端 未结 4 2182
我在风中等你
我在风中等你 2021-02-19 06:33

First I create my array

myarray = np.random.random_integers(0,10, size=20)

Then, I want to set 20% of the elements in the array to 0 (or some o

4条回答
  •  我在风中等你
    2021-02-19 06:55

    For others looking for the answer in case of nd-array, as proposed by user holi:

    my_array = np.random.rand(8, 50)
    indices = np.random.choice(my_array.shape[1]*my_array.shape[0], replace=False, size=int(my_array.shape[1]*my_array.shape[0]*0.2))
    

    We multiply the dimensions to get an array of length dim1*dim2, then we apply this indices to our array:

    my_array[np.unravel_index(indices, my_array.shape)] = 0 
    

    The array is now masked.

提交回复
热议问题