为了账号安全,请及时绑定邮箱和手机立即绑定

以相同顺序随机化 3 个独立向量

以相同顺序随机化 3 个独立向量

慕运维8079593 2023-07-18 17:50:37
我想以相同的顺序随机化 python 中的三个单独的向量。我的意思是这样的:before randomizing:a = [[1, ...],      b = [[1, ...],        c = [1,      [2, ...],           [2, ...],             2,     [3, ...]]           [3, ...]]             3]after randomizing:a = [[2, ...],      b = [[2, ...],        c = [2,      [3, ...],           [3, ...],             3,     [1, ...]]           [1, ...]]             1]这只是数据的一个示例。这实际上是一个大数据集。我知道我可以连接它们并进行随机化,但是有没有其他方法可以在不合并它们的情况下做到这一点,因为我最后需要将它们分开。
查看完整描述

3 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

您可以随机化它们的索引。


import numpy as np


# before randomizing:

a = np.array([[1,2,3],[4,5,6],[7,8,9]])

b = np.array([1,2,3])


# randomize indexes

n = np.size(a,axis=0)

new_index = np.random.choice(n, size=n, replace=False)


# after randomizing (you may want a copy of them instead of a view):

a2 = a[new_index].copy()

b2 = b[new_index].copy()


查看完整回答
反对 回复 2023-07-18
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

使用随机生成器seed在每次操作之前应用相同的方法shuffle

import numpy as np


a = np.array([[1, 2, 3, 4], [2, 3, 4, 5], [3, 4, 5, 6]])

b = np.array([[1, 2, 3, 4], [2, 3, 4, 5], [3, 4, 5, 6]])

c = np.array([1, 2, 3])


SEED = 123456789


rng = np.random.default_rng(SEED)

rng.shuffle(a,axis=0)


rng = np.random.default_rng(SEED)

rng.shuffle(b,axis=0)


rng = np.random.default_rng(SEED)

rng.shuffle(c,axis=0)

a、b 和 c 的输出


(array([[2, 3, 4, 5],

        [3, 4, 5, 6],

        [1, 2, 3, 4]]),

 array([[2, 3, 4, 5],

        [3, 4, 5, 6],

        [1, 2, 3, 4]]),

 array([2, 3, 1]))


查看完整回答
反对 回复 2023-07-18
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

一种方法是创建一个索引数组,对其进行打乱,然后按它排列其他数组:


size = len(a)

indexes = np.arange(size)

new_a = np.empty(size)

new_b = np.empty(size)

new_b = np.empty(size)

for i in range(size):

    new_a[i] = a[indexes[i]]

    new_b[i] = b[indexes[i]]

    new_c[i] = c[indexes[i]]


查看完整回答
反对 回复 2023-07-18
  • 3 回答
  • 0 关注
  • 101 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信