random python
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),实验数据本⾝的重复可能性较⼩。重复详情见图。
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)
这个feel感觉就棒棒哒了。
2、 np.random.shuffle(x)和np.random.permutation(x):是否返回新数组?
numpy.random.shuffle(x)函数通过混洗其内容来就地修改序列,返回值None;numpy.random.permutation(x)会返回⼀个新的数组⽽不修改原数组。
⾄此个⼈的需求已得到满⾜,虽还有更多值得探究的细节,但需求产⽣时再来追究,问题驱动学习,嘿嘿。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。