对于二维数组不能直接用随机采样的方法,需要通过随机索引对应到二维数组中,从而实现二维数组的随机采样。
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)