This question already has answers here:
numpy.random.shuffle returns None
                                
                                    (3个答案)
                                
                        
                                7个月前关闭。
            
                    
在我自己的函数中使用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]

最佳答案

这不是偶然的;这是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

关于python - numpy.random.shuffle令人惊讶的行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57372162/

10-15 17:47