【问题标题】:Find indexes of nonuniform sample with np.random.choice使用 np.random.choice 查找非均匀样本的索引
【发布时间】:2017-06-05 09:31:25
【问题描述】:

假设我有两个大型一维数组 X 和 Y 形式的位置信息。我想从这些数组中不均匀地采样位置。 我以为我可以用 np.random.choice 做到这一点,但因为它只接受一维数组而我不能这样做:

Xsample = np.random.choice(X, n, p)

Ysample = np.random.choice(Y, n, p)

样本中有 n 个点,p 是一个概率数组,因为这将为 Xsample 和 Ysample 采样不同的点,所以我只能找到一种方法来获取一个采样的索引。问题是不能保证列表中的数字是唯一的,所以不能完全使用 np.where。

有什么想法吗?

【问题讨论】:

    标签: numpy random indexing choice


    【解决方案1】:

    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])
    

    【讨论】:

    • 不应该是 np.random.choice(np.arange(len(X)), 2, p) 吗?
    • 是的,@mgutsche 你是对的,为了清楚起见,我会改变我的答案。但是,numpy.random.choice 也可以将第一个参数 a 作为 int 并执行 arange(a)。
    猜你喜欢
    • 1970-01-01
    • 2021-10-12
    • 2023-03-18
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多