python学习numpy基础和应用-6

在上一篇的学习中,了解到,使用那些方法已经能够实现数组的变形了,numpy觉得我们不够,还允许我们使用下标操作完成变形。

我们定义了数组data,

我们发现c从一维变成了二维,从以前的切片知识可知,操作本质是对data进行切片,逗号前面部分,表示data0轴上的所有元素,

也就是data的全部元素,而逗号后面的元素表示1轴上的元素,在设置元素取值范围的时候,使用了np.newaxis,查看文档,

我们会发现np.newaxis是none。如果我们用none代替np.newaxis会是一样的效果吗?

结果显而易见,是一样的。我们刚才考虑到它是切片操作,那么它是不是与原数组共用一个视图那?

结果是,共用同一个视图。

我们把data变为二维数组的时候,将1轴设为None,将0轴设为None将会是什么样的操作呢?

符合我们的预期。

针对这种在切片中使用newaxis的方法,numpy提供了一个替代函数--np.expand_dims()。

函数是根据轴来调整数组的形状。

我们在numpy中,实现数组与数组的结合,以及针对一个数组进行分割,有几个非常好用的方法。

这些方法丰富了针对数组的操作方式。

水平组合

实现水平组合的函数形式是np.hstack(tup),其中tup是一个元组,包含几个即将被组合在一起的几个数组。

下面就演示一项:

假设实例为二维数组,要求其0轴方向的形状一样,而1轴的方向的形状可以不同。

此外,还有实现水平组合另外两种方法,一个是Np.stack,另一个是np.concatenate()。

垂直组合

实现垂直组合的专有函数为np.vstack()函数。

既然是垂直方向,就要求其1轴上形状相同。

学习的过程中发现,有转置操作:

但是元素的排列方法明显不同。

np.concatenate()在传入轴的参数后,也能实现垂直组合,与之前的操作等效。

除了以上两种的组合方式外,还有深度组合,行组合,列组合方式。

举例说明:

 

我们可以想象,a,b为两个平面,而b为a平面上元素乘以3而得到的数组。

进行结合的话,将有关系的元素组队,就会得到新的数组。

实现的是将两个一维数组结合,当操作的是二维数组,则效果等于垂直组合。

与组合相对的是切割操作。

np.split()的通用的函数形式为np.split(ary,indices_or_sections,axis=0)。

这里axis=1代表从1轴进行切割,分为2部分

这里我们将其切割为三部分。

同样我们可以改变切割的轴,当我们将切割轴设为0时:

当然,我们那也有专门的切割函数来进行分割:

np.hsplit(数组,分割数),np.vsplit(数组,分割数)。

我们不仅能组合切割元素,还能“改编”。

意思是不仅能修改数组中已有的元素,还能进行增加,删除等操作。

我们将b中的元素添加到a中。这里我们新建了一个数组r用来存放原来的数组。

如果不声明轴的话,将意味着知识用原来两个数组的元素组建一个新的一维数组。

除了追加外,我们还能插入,即某些元素插入到指定位置。

我们这里看到,不共用同一个视图。

我们还有一个删除的操作:

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值