You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么调用numpy的shuffle方法时会得到重复的数组?

重复结果原因解析

Python中的列表属于可变对象,你代码中每次存入列表x的不是数组a当前值的独立副本,而是a本身的内存引用:

  • np.random.shuffle()是原地修改方法,执行时会直接修改a对应内存空间里的元素顺序,不会生成新的列表对象
  • 两次循环往x中添加的都是同一个a的引用,所以最终x里的两个元素指向同一块内存地址,值自然完全一致,都是最后一次shuffle操作后的结果
修复方法

每次向x中添加元素时,存入a的拷贝即可,示例代码如下:

import numpy as np
a = [1,2,3,4,5]
x = []
# 需要3个排列结果的话,循环次数要设置为3,range(0,2)只会执行2次循环
for i in range(3):
    np.random.shuffle(a)
    # 一维列表用浅拷贝即可满足需求,可以用a.copy()或者a[:]
    x.append(a.copy())

内容的提问来源于stack exchange,提问作者Johanna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 00:45:03