Numpy将相同的随机排列应用于具有相同形状的两个不同ndarray



假设我有两个NumPy数组,比如说,每个数组的形状都是(N,1(。第一个数组是一个名为"年龄"的数组,第二个数组名为"收入"。假设这些属性是不同人的样本,那么ith指数指的是样本中的ith人,通过知道i,我可以检索他的年龄和收入。现在假设我想随机地(或确定性地(置换两个数组,使它们都经历相同的置换?我的意思是,在排列之后,两个数组的索引j都指同一个人的属性?我知道这样做的一种方法是定义具有两个属性的人的对象:ageincome,但我想要Numpy的方法。谢谢

您可以首先创建一个索引排列,然后使用相同的索引排列访问两个数组。例如,这可以使用numpy.random.permutation来完成。

示例:

>>> age = np.random.randint(0,100,10)
>>> income = np.random.randint(0,10000,10)
>>> age
array([38,  4, 70, 16,  8, 29,  1, 41, 54, 60])
>>> income
array([4797, 5884, 8005, 5696, 7577, 6386, 3314, 3574, 5422,  409])
>>> permutation_indices = np.random.permutation(10)
>>> permutation_indices
array([9, 1, 8, 0, 7, 3, 2, 6, 5, 4])
>>> age[permutation_indices]
array([60,  4, 54, 38, 41, 16, 70,  1, 29,  8])
>>> income[permutation_indices]
array([ 409, 5884, 5422, 4797, 3574, 5696, 8005, 3314, 6386, 7577])

最新更新