对于二维数组不能直接用随机采样的方法,需要通过随机索引对应到二维数组中,从而实现二维数组的随机采样。
def sub_sample(points, num):
'''
points: 点集
num: 采样点的个数
输出为采样点点集
'''
# 需要通过索引来随机采样,numpy 无法对于二维数组处理
ind = np.arange(len(points))
sub_ind = np.random.choice(ind, num, replace=False)
sub_points = np.array(points)[sub_ind] # numpy array
return sub_points.tolist()
数据测试
zz = [(2,3), (2,4), (3,5), (5,3), (2, 7), (2,8), (3, 8)] zz = np.array(zz) ind = np.arange(len(zz)) # replace=False,结果不重复 bb = np.random.choice(ind, 3, replace=False) np.array(zz)[bb] # 可以直接使用下面函数 sub_sample(zz, 3)