You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python从两个数值列表X、Y中随机选取10个对应元素?

从对应列表中随机选取指定数量的元素对

我有两个数值列表X和Y,需要从每个列表里随机选10个对应位置的元素,生成各含10个元素的新列表。举个例子:如果X是[1,2,3,4,5]、Y是[10,20,30,40,50],选2个元素的话,期望结果是([1,3], [10,30])。

我的使用场景如下:

def lin_reg_all(X, Y):
    ...

def lin_reg_sample(X, Y):
    X_sample, Y_sample = ?
    lin_reg_all(X_sample, Y_sample)

解决方案

无放回采样(每个元素最多选一次)

用random.sample生成不重复的随机索引,再提取对应元素:

import random

def lin_reg_sample(X, Y):
    # 先校验两个列表长度一致
    assert len(X) == len(Y), "X和Y的长度必须相同"
    # 生成10个不重复的索引
    sample_indices = random.sample(range(len(X)), 10)
    # 提取对应元素
    X_sample = [X[i] for i in sample_indices]
    Y_sample = [Y[i] for i in sample_indices]
    lin_reg_all(X_sample, Y_sample)

有放回采样(元素可重复选中)

如果允许同一个元素被多次采样,用random.choices:

import random

def lin_reg_sample(X, Y):
    assert len(X) == len(Y), "X和Y的长度必须相同"
    # 生成10个可重复的索引
    sample_indices = random.choices(range(len(X)), k=10)
    X_sample = [X[i] for i in sample_indices]
    Y_sample = [Y[i] for i in sample_indices]
    lin_reg_all(X_sample, Y_sample)

说明

  • random.sample适合需要避免重复元素的场景,要求原列表长度≥10(否则会报错)
  • random.choices允许重复采样,原列表长度可以小于10

内容的提问来源于stack exchange,提问作者Joe C.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 07:35:19