假设我有两个大的一维数组X和Y形式的位置信息。我想从这些数组中采样非均匀位置。 我以为我可以用np.random.choice做到这一点,但因为它只接受1D数组而我不能这样做:
Xsample = np.random.choice(X,n,p)
Ysample = np.random.choice(Y,n,p)
在样本中有n个点,并且p是概率数组,因为这将为Xsample和Ysample采样不同的点,我留下了找到一种方法来获得一个采样的索引。问题是,无法保证列表中的数字是唯一的,因此不能完全使用np.where。
有什么想法吗?
答案 0 :(得分:0)
Doh,我可以从索引中提取样本。 这是一个有效的例子:
X = np.array([1, 2, 3, 4, 5])
Y = np.array([11, 12, 13, 14, 15])
p = [0.25, 0., 0.5, 0.25]
sample_idxs = np.random.choice(arange(len(X)), 2, p)
# can also be
# sample_idxs = np.random.choice(len(X), 2, p)
sample_idxs
> array([2, 4])
X[sample_idxs]
> array([3, 5])
Y[sample_idxs]
> array([13, 15])