代码复现:random.sample() np.where()

本文介绍了Python中random.sample函数用于从序列中随机抽取不重复元素的方法,以及numpy.where用于在标签数组中选取满足条件的样本索引。同时,讲解了extend()方法在合并列表方面的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

random.sample()

random.sample 函数是 Python 的 random 模块中的一个函数,它用于从一个序列中随机抽取指定数量的不重复的元素,并以列表形式返回这些元素。这个函数非常适合用于需要随机抽样而不希望有重复元素的场景。 

import random

# 假设我们有一个数字列表
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 我们想从这个列表中随机抽取3个不重复的数字
sampled_numbers = random.sample(numbers, 3)

print("随机抽取的数字:", sampled_numbers)

在这个例子中:

  • numbers 是一个包含10个数字的列表。
  • random.sample(numbers, 3) 会从这个列表中随机选择3个不同的元素。每次执行这行代码时,都可能得到不同的结果,因为它是随机的。
  • sampled_numbers 将是一个包含3个从 numbers 列表中随机选择的不重复数字的新列表。

这个函数保证了抽样的元素是唯一的,即不会在返回的列表中重复。

np.where()

import numpy as np
import random

# 假设我们有一个标签数组,每个元素表示数据集中对应样本的标签
self.labels = np.array([0, 1, 2, 1, 0, 2, 1, 0, 2, 1])

# 我们想要随机选取标签为1的样本的一部分索引,比如说50%的样本
i = 1  # 我们感兴趣的标签
ratio = 0.5  # 我们想要选取的比例

# 找出所有标签为i的样本的索引
indexes_of_i = np.where(self.labels == i)[0]

# 计算根据比例应该选取的样本数量
num_samples_to_select = int(len(indexes_of_i) * ratio)

# 随机选取指定数量的样本索引
selected_indexes = random.sample(list(indexes_of_i), num_samples_to_select)

print("所有标签为1的样本的索引:", indexes_of_i)
print("随机选取的索引:", selected_indexes)

print(np.where(labels == i))

index.extend()

extend() 方法是 Python 列表(list)的一个方法,用于将一个迭代器(如另一个列表、元组、集合等)中的所有元素添加到当前列表的末尾。这与 append() 方法不同,后者是将一个单独的元素添加到列表的末尾。使用 extend() 方法可以合并两个列表或将任何可迭代对象中的元素添加到当前列表中。

以下是使用 extend() 方法的一个例子:

# 定义一个初始列表
indexes = [1, 2, 3]

# 我们想要将另一个列表的元素添加到 indexes 列表中
more_indexes = [4, 5, 6]

# 使用 extend() 方法合并列表
indexes.extend(more_indexes)

print(indexes)

输出将会是:

[1, 2, 3, 4, 5, 6]

在这个例子中,extend() 方法将 more_indexes 列表中的所有元素添加到了 indexes 列表的末尾,结果是一个包含了两个列表所有元素的新列表。

如果你使用 append() 而不是 extend(),结果将会不同:

indexes = [1, 2, 3]
indexes.append(more_indexes)  # 使用 append() 而不是 extend()
print(indexes)

输出将会是:

[1, 2, 3, [4, 5, 6]]

可以看到,使用 append() 方法时,more_indexes 列表被添加为一个整体,作为一个元素添加到了 indexes 列表的末尾,而不是将其元素分别添加。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值