python 打乱数组顺序,Python打乱二维数组顺序:个人使用经历

目录

我的需求背景:

发现问题:

解决方式:

我的需求背景:

两个分类标签的数据独立成组,使用np.vstack拼接到一起后,希望打乱行的顺序。

#合并SD和USD标签的数据

finalData = np.vstack((data0,data1))

finalData.shape

(1518, 23)

初步尝试:

网络搜索后,使用random.shuffle()貌似可以满足需求。参考:Python3 shuffle() 函数

import random

random.shuffle(finalData)

print(finalData)

但个人使用过程发现存在一些问题。

发现问题:

1、存在某些行重复出现的问题。我是23列的数据,最后一列为数据标签(0,1),实验数据本身的重复可能性较小。重复详情见图。

53712d664f8a7e4c48901bc68cc73771.png

2、从上图不难发现,数据标签并不是我期待的结果:在0-1大致五五开的情况下(在前后两部分),前30行都是0标签而没有1标签。

综上推测:random.shuffle在二维数组中的随机,可能是在新数组的每一行,以正态概率或其他方式随机选取原数组的一个Index写入。此处验证留空,可查询源码了解。

上述问题不知道是否可以通过设置参数解决。

解决方式:

既然random.shuffle()存在问题,那么是否有其他方式进行数组顺利的打乱呢?

1、python自带的random和numpy的random。

虽然平时有用random函数,但没有关心过python自带的random和np的random有什么不同。数组以外的差别可以参考简书:【python】random与numpy.random

我这里希望打乱二维数组顺序,关注到np.random中也有上文所用的函数,既然操作是array又有自家的函数,不妨一试。

#打乱数组顺序

np.random.shuffle(finalData)

a65cb87a7054ce1721e4ad2835ce8dc1.png

这个feel感觉就棒棒哒了。

2、 np.random.shuffle(x)和np.random.permutation(x):是否返回新数组?

numpy.random.shuffle(x)函数通过混洗其内容来就地修改序列,返回值None;numpy.random.permutation(x)会返回一个新的数组而不修改原数组。

至此个人的需求已得到满足,虽还有更多值得探究的细节,但需求产生时再来追究,问题驱动学习,嘿嘿。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值