令人惊讶的numpy.random.shuffle行为

时间:2019-08-06 08:44:38

标签: python numpy

在我自己的函数中使用numpy.random.shuffle时,它意外更改了我的全局变量。我不确定它的用法是否有误解。

numpy版本为“ 1.16.4”

import numpy as np
def shuffle_test(a):
    np.random.shuffle(a)
    b=a
    return b

outer_input  = np.array(range(10))
print(outer_input)

outer_output = shuffle(outer_input)
print(outer_input)

这是结果 洗牌前输入:

[0 1 2 3 4 5 6 7 8 9]

随机播放后输入:

[5 4 7 1 8 2 6 0 9 3]

1 个答案:

答案 0 :(得分:1)

这不是偶然的;这是np.random.shuffle

的描述行为
  

通过改组其内容就地修改序列

您可以这样:

import numpy as np

outer_input  = np.array(range(10))
np.random.shuffle(outer_input)
outer_input

# array([1, 9, 7, 4, 3, 6, 0, 5, 2, 8])   # for instance