随机排列一个numpy数组而不改变

zour9fqk  于 2023-03-30  发布在  其他
关注(0)|答案(2)|浏览(111)

np.random.Generator#shuffle就地打乱numpy数组。
我如何在不改变原始数组的情况下 Shuffle 一个numpy数组?

wz8daaqr

wz8daaqr1#

可以使用permutedGenerator方法。
比如说

In [6]: rng = np.random.default_rng()

In [7]: x = np.arange(10)

In [8]: x
Out[8]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

创建x的随机混洗副本:

In [9]: rng.permuted(x)
Out[9]: array([3, 5, 8, 0, 4, 6, 7, 2, 1, 9])

检查x是否未更改:

In [10]: x
Out[10]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
e5nqia27

e5nqia272#

使用np.random.Generator#permutation来随机排列数组而不进行突变:

from numpy.random import default_rng

rng = default_rng()
import numpy as np

x = np.arange(10)
#=> array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

shuffled_x = x[rng.permutation(x.size)]
#=> array([5, 6, 2, 3, 4, 1, 9, 7, 0, 8])

相关问题