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

如何从Numpy 2D数组中无重复随机抽取n行?

解决Numpy数组无重复随机抽取n行的问题

原代码的问题

  1. 索引范围错误:你用了arr.shape[1](数组的列数)来生成索引范围,正确的应该是arr.shape[0](数组的行数)。
  2. 抽取数量错误:random.sample的第二个参数设为1,只会抽取1个行索引,自然只返回单行,需要改成你需要的n。

方案一:修正random.sample用法

import random
import numpy as np

# 定义你的数组
arr = np.array([[996.924, 265.879, 191.655],
                [996.924, 265.874, 191.655],
                [996.925, 265.884, 191.655],
                [997.294, 265.621, 192.224],
                [997.294, 265.643, 192.225],
                [997.304, 265.652, 192.223]], dtype=np.float32)

n = 3  # 设置你要抽取的行数
rows_id = random.sample(range(arr.shape[0]), n)  # 基于行数生成无重复索引
sampled_arr = arr[rows_id, :]  # 抽取对应行

方案二:用Numpy原生方法(更推荐)

使用np.random.choice,通过replace=False确保无重复抽取,更贴合Numpy的使用场景:

import numpy as np

# 定义你的数组
arr = np.array([[996.924, 265.879, 191.655],
                [996.924, 265.874, 191.655],
                [996.925, 265.884, 191.655],
                [997.294, 265.621, 192.224],
                [997.294, 265.643, 192.225],
                [997.304, 265.652, 192.223]], dtype=np.float32)

n = 3  # 设置你要抽取的行数
rows_id = np.random.choice(arr.shape[0], size=n, replace=False)
sampled_arr = arr[rows_id, :]

注意事项

  • 确保n的取值不超过数组的总行数,否则会触发索引错误。

内容的提问来源于stack exchange,提问作者Spatial Digger

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 05:25:25