为什么 np.random.shuffle() 会随机排列数组的当前版本和以前版本?

问题描述 投票:0回答:1

我最近使用 np.random.shuffle() 遇到了一个问题,其中我有一组训练索引。为了创建一个带有打乱索引的新数组(并保持原始索引不变),我使用了 np.random.shuffle()。经过一段令人尴尬的时间后,我发现,虽然 np.random.shuffle() 创建了一个新的打乱索引数组,但它也打乱了我的原始数组,尽管该数组不在函数中。

这是一个简单的例子来演示我原来的问题。有谁知道为什么会发生这种情况?

np.random.seed(124)
array1 = [1,2,3,4,5]
print(f' array 1 is {array1}')
array2 = array1
np.random.shuffle(array2) 
print(f' array 2 is {array2}')
print(f' array 1 is {array1}')

输出:
数组 1 是 [1, 2, 3, 4, 5]
数组 2 是 [1, 4, 3, 2, 5]
数组 1 是 [1, 4, 3, 2, 5]

python arrays shuffle
1个回答
0
投票

当您设置

array2 = array1
时,您将一个对象链接到另一个对象,但不会复制它。因此,
array2
的洗牌也包含在
array1
中。如果您只是想将
array1
的内容复制到一个新的单独且独立的对象中,您可以使用:
array2 = array1.copy()

© www.soinside.com 2019 - 2024. All rights reserved.