首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >python:为什么random.shuffle会改变数组

python:为什么random.shuffle会改变数组
EN

Stack Overflow用户
提问于 2017-07-05 13:25:35
回答 1查看 2.5K关注 0票数 6

我正在使用random.shuffle对2D numpy数组进行混洗。我遇到了以下问题:

代码语言:javascript
运行
复制
import numpy as np
from random import shuffle as sf 

b = np.array([1,2,3,4,5])
print b
# [1 2 3 4 5]
sf(b)
print b
# [1 4 5 3 2]

a = np.array([[1,2,3],[4,5,6],[7,8,9]])
print a
# [[1 2 3]
#  [4 5 6]
#  [7 8 9]]
sf(a)
print a
# [[1 2 3]
#  [4 5 6]
#  [1 2 3]]

结果表明,在混洗一维数组时,一切都是正确的。但是,当对2D数组进行混洗时,结果变得奇怪。

为什么原始数组的第三行被丢弃,第一行被复制两次?

我知道可能有解决这个问题的方法,比如首先打乱一个表示行in的一维数组,然后按打乱in的顺序提取二维数组。但是我确实想弄清楚random.shuffle的实现发生了什么,或者我的代码出了什么问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-05 13:32:09

random模块中的Shuffle不是用来处理numpy数组的,因为它与嵌套的python列表并不完全相同。您应该改用numpy.random模块的shuffle

代码语言:javascript
运行
复制
import numpy as np
from numpy.random import shuffle

arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
shuffle(arr)
print(arr)
# output:
# [[4 5 6]
# [1 2 3]
# [7 8 9]]
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44917606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档