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

如何在NumPy的4维数组中随机抽取6000个样本?

解决方法

你完全可以针对数组的**样本维度(第一个维度,共25036个样本)**生成随机索引,再用这些索引提取样本,根本不需要重塑数组:

方法1:无放回随机抽样(推荐,避免重复选到同一样本)

import numpy as np

# 生成6000个不重复的随机索引,范围覆盖所有样本
random_indices = np.random.choice(train_images.shape[0], size=6000, replace=False)
# 通过索引提取样本,结果保持(6000, 12, 15, 15)的形状
selected_train_images = train_images[random_indices]

方法2:有放回随机抽样(允许重复选到同一样本)

如果你的场景允许重复抽取同一样本,只需修改replace参数:

random_indices = np.random.choice(train_images.shape[0], size=6000, replace=True)
selected_train_images = train_images[random_indices]

方法3:用随机排列实现无放回抽样

另一种等价的无放回抽样方式是先打乱所有样本的索引,再截取前6000个:

shuffled_indices = np.random.permutation(train_images.shape[0])
selected_train_images = train_images[shuffled_indices[:6000]]

为什么这个思路能解决问题?

np.random.choice报错是因为你直接传入了多维数组,但它默认只能处理一维数组。而我们真正要随机选择的是第一个维度的完整样本,所以只需要生成该维度的随机索引,再通过numpy的索引切片功能提取对应样本即可,全程不会改变数组的维度结构。

内容的提问来源于stack exchange,提问作者Kalu Samuel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 16:52:07