Python numpy对n行的2D数组进行采样

webghufk  于 2023-01-01  发布在  Python
关注(0)|答案(2)|浏览(164)

我有一个如下的numpy数组,我想取n行的随机样本。

([[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=float32)

我试过了

rows_id = random.sample(range(0,arr.shape[1]-1), 1)
row = arr[rows_id, :]

但是这个9ndex掩码只返回一行,我想返回n行作为numpy数组(没有重复)。

efzxgjgh

efzxgjgh1#

你有三个关键问题:arr.shape[1]返回列数,而您需要的是行数--arr.shape[0]。第二,range的第二个参数是独占的,因此实际上并不需要-1。第三,random.sample的最后一个参数是行数,将其设置为1。
一个更好的方法来完成您正在尝试的事情可能是random.choices

gg0vcinb

gg0vcinb2#

尝试x是原始数组的位置:

n = 2  #number of rows
idx = np.random.choice(len(x), n, replace = False)
result = np.array([x[i] for i in idx])

相关问题