numpy合并不同维度矩阵 |
您所在的位置:网站首页 › 矩阵维度怎么算 › numpy合并不同维度矩阵 |
![]()
上一节课我们讲解了Numpy库的基础属性,创建数组,基本运算和查找索引这五部分内容,大家都学会了吗?若是没问题的话,就让我们进入后半程的学习吧,打开你的笔记本,开始今天的课程。 ![]() 这节课我们介绍Numpy的数组合并、分割,顺便讲一下Python中的深浅复制。 1数组合并Numpy可以对多个数组进行操作,其中合并操作是多个数组或矩阵合并成一个矩阵,具体操作如下: a数组和b数组经过上下合并和左右合并后,生成的c和d数组是不一样的,通过array.shape方法输出矩阵的行列个数。 接下来我们再次讲解转置的操作,上一节介绍了转置,就是矩阵行列互换操作。但是有的同学在进行转置操作的时候出现了一些问题,导致无法转置。 这是为什么呢?结合刚才的array.shape方法我们发现了个问题:一维数组的输出跟多维数组输出不太一样:前者只输出元素个数,后者输出行列个数。 这说明Numpy对待一维数组和多维数组是不一样的。Numpy的一维数组我们称为序列,多维数组成为矩阵,而转置是矩阵的运算,与数列无关。但是,数学中存在一维矩阵的概念,因此我们可以通过转换来计算一维数组的转置。 给序列增加维度,变成一维矩阵,np.newaxisd的作用相信大家已经能猜出来了,操作与列表相似,这样就能完成一维矩阵的转置问题了。 至于多个数组的合并,除了多次使用单次合并之外,我们有更好的办法: 随便创建一个三行四列的数组: 拆分数组可以按行拆分、按列拆分;或是等量拆分、不等量拆分。这四种分割方式是不冲突的。 观察这两种分割方式,我们不难得出:等量分割和不等分割本质差不多,区别就在于数组能不能平均分成若干份。如果不能,不等分割法依然会依次进行分割,最后一个元素将会缺少若干项。 除了上图的两种分割函数,还有两种简化的行列分割函数: 我们使用Python经常对一些元素进行赋值,比如a=1,b="checkout",c=[1,2,3]。大家可能都知道,a=1,b=a,c=b,那么如果a=a+1,即使a=2,b,c也仍然是1。 但是如果a,b,c是列表、字典、以及咱们numpy的数组的话,事情就变得奇妙了起来。为什么这么说呢? 啊哈,是不是傻了眼?我明明只修改了a当中的一个元素值,bcd三个变量的值都变了。如果大家学过C语言的话,这不难理解:三个变量使用了相同的内存空间,也就是说,abcd四个变量都是一个数组。我们来验证一下: 果然如此!那如果我创建一个数组,只想要前一个数组的值,不想跟它占用同一块内存。也就是说,像数字类型一样,不会牵一发而动全身。那么我们就需要这么做: .copy()方法就为我们复制了一个a的变量,传给了b,但是ab是不同的变量。 这就说明了,等号是浅copy,在可变数据类型中共享内存地址;而不可变数据类型就没有深浅copy这一说啦。 ![]() Numpy基础入门就讲解到这里啦,什么,你说自己感觉啥也没学会?不知道学完之后能干啥?别慌,Numpy只是个计算工具而已,需要与接下来我们介绍的大哥Pandas一起使用,就能完成很多超酷的事情啦。不信的话,你可以提前看看课件,感受一下数据分析的魅力。 本节课到此就结束啦,大家如果有什么疑问可以在公众号留言给我们哟,我们会在第一时间为大家解答。同时,没有课件的小伙伴在公众号回复numpy获取链接。大家在课下要多加练习,善于思考,我们下节课再见! ![]() ![]() ![]() ![]() 文:郭锦洋 审:谢寿春 ![]() ![]() |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |