【538】二维数据实现随机采样

参考:numpy中的random.choice()函数

参考:numpy学习笔记之随机采样函数

  对于二维数组不能直接用随机采样的方法,需要通过随机索引对应到二维数组中,从而实现二维数组的随机采样。

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) 
原文地址:https://www.cnblogs.com/alex-bn-lee/p/14593531.html