首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python数据分析之numpy(二)

我们继续来看一些数组的基础应用。

1 数组切片

什么是数组切片?简单的说,就是截取数组的一部分。假设有一数组a,其切片的语法如下:

a[起始位置:终止位置:步长]

起始和终止位置都很好理解,步长就是说你每隔几个取一个。注意,这3个参数都是可以省略的,如果3个参数同时省略,意味着切片是从开始到末尾,取所有元素,步长为1。

我们来看几个例子:

可以看到,切片数组是含左不含右,也就是包含起始位置,不包含终止位置。

有时,步长也可能成为负数,此时会将数组倒序排列:

对于多维数组也是一样的,用逗号分开即可:

最后还有一点要注意的是,数组切片返回的是数组的视图,不是数组的副本。这就是说数组切片元素被修改后,原数组中的元素也会更改:

那如何创建数组切片的副本呢?用copy()方法即可实现:

可以看到,在我们创建副本后对数组切片再进行修改,原数组并不会受到影响。

2 数组变形

一种常见的情况是将一维的数组变形成更高维的数组。例如,我们想将1-8变成2*4的矩阵,可以用reshape()来实现:

还有一种常见的变换是将一维数组变成二维的行或列,可以用newaxis来实现:

如上图,我们将1维的数组变成1*4的二维数组。其效果等同于reshape(1,4):

同样,我们也可以变成4*1的二维数组:

其效果等同于reshape(4,1)。

3 数组的合并和分割

合并

我们有2个数组c和d(c为上图中数组),现在将2者合并为一个数组:

可以看到,结果是水平方向上的拼接。

如果想换成垂直方向的合并,可以用vstack来实现:

水平方向上的合并,也可以用hstack来实现:

分割

分隔就是合并的逆过程,如下图,我们将d数组分割成3部分:

可以看到,我们使用split来进行分割,其参数有2个。第一个为分割的数组对象,第二个为分割点,注意分割点位置处的元素属于右边部分,即含右不含左,n个分割点会得到n+1个部分。

与合并对应,分割也有hsplit和vsplit:

vsplit只有在2维及以上的数组中才可使用,我们创建一个e数组:

可以看到,我们将4*4的数组e按垂直方向分成2部分,分割点在第4行,第一部分3行,第二部分1行。

好了,数组的一些基础应用基本就介绍完了,下面会分享一些稍微复杂的数组计算相关的内容,敬请期待。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190203G0AFX700?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券