内容が異なるサイズ(20000,1)の配列がいくつかあります。配列ごとに同じ行が削除されるように、配列ごとにすべての行の25%をランダムに削除したいと思います。私が見つけたかなり退屈な方法は次のとおりです。
import numpy as np
a=np.array(range(1000))
b=np.array(np.random.rand(1000))
seed=np.random.randint(0,100000000) #picking a random seed
np.random.seed(seed) #Setting the same seed for each deletion
a[np.random.rand(*a.shape) < .25] = 0
np.random.seed(seed)
b[np.random.rand(*b.shape) < .25] = 0
a=a[a !=0]
b=b[b !=0]
このアプローチにはいくつかの問題があります。たとえば、配列にすでにゼロが含まれている場合はどうなりますか?これを行うためのより良い方法はありますか?