前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python第三十一课:Numpy数组操作

Python第三十一课:Numpy数组操作

作者头像
HuangWeiAI
发布2019-07-29 14:38:01
6880
发布2019-07-29 14:38:01
举报
文章被收录于专栏:浊酒清味浊酒清味

Introduction

接下来我们会学习如何改造数组方便我们使用,这里的改造包括对数组进行变形,翻转或者转置数组,连接数组,以及分割数组等等。

01

数组变形

可以实现数组变形的函数有好几个:

(1)最常见的也是最主要的就是我们之前提到过的reshape函数,可以将数组从一个形状转变成另外一个不同的形状。

(2)有时候我们想让高维数组展开成一维,那么我们可以使用flatten函数。先建好一个数组A,然后输出A.flatten()就可以完成降维。当然,我们可以选择展开式的秩序order。如果order='F',就是按列展开;如果order='C',就是按行展开。

(3)另外一个将数组展开铺平的函数叫ravel函数,它和flatten功能其实差不多,而且默认的展开顺序也是order='C',即按行展开。如果选择order='F'就是按列展开。

我们用几个例子来分别讲解这三个函数:

原始数组A是一个从0到11的一维数组;B是通过reshape函数改造成2*6的二维数组;C和D分别从B展开降到一维。其中C是按列顺序降维,而D是按照行顺序。我们看一下运行结果:

02

数组翻转

从数学角度而言,二维数组就是矩阵。在矩阵操作中,有一项叫转置,是将矩阵元素位置的行列互换,比如原来在(1,2)这个位置的元素,会和(2,1)这个位置的元素进行互换。在Numpy中我们有两种方式来实现数组的翻转:

(1)transpose函数,将被翻转目标A放到函数中,像这样np.transpose(A)就可以了。

(2)第二种办法更加简便,直接在目标数组A后面加个.T就行了。

A是一个4*2的数组,B和C分别通过两种方式翻转A,虽然函数不同,但是结果却是一样的:

03

数组连接

连接数组顾名思义是将两个或多个数组按照一定的方式连接起来,常用的数组连接有一下几种函数:

(1)concatenate函数,使用方式是把被连接的数组依次放进去,用逗号隔开,再用括号括起来;还有一个参数axis来指定按照哪一个轴连接。axis默认值是0,意思是沿着第一个轴连接,如果你设置成1,那么就是沿着第二个轴连接。

(2)stack函数,它和concatenate函数有一点不同。stack函数更多是一种堆叠,会在原来的维度上增加一个维度;而concatenate不会增加维度。

(3)hstack函数,它是stack函数的变种,其中h的意思是horizontal,水平的。顾名思义,它会将数组按水平的方式连接。关键是hstack不像stack一样增加维度,这一点是很好的。

(4)vstack函数,也是stack函数的变种,其中v的意思是vertical,垂直的。顾名思义,它会将数组按竖直的方式连接。

A和B都是2*2的数组,我们分别用四个函数去连接它们。第一个是concatenate函数,axis=1表示沿着第二个轴,也就是水平连接;第二个是stack函数,同样是沿着第二个轴,在这里我们省略了axis参数;第三个是hstack,竖直方向连接;第四个是vstack,水平方向连接。

运行结果:

注意到第二个打印结果是一个三维数组,这种连接方式不是很常用;而concatenate当axis=1时就相当于hstack,axis=0时就相当于vstack函数。

04

数组分割

数组分割相当于数组连接的逆向操作,将一个大数组分割成好几个数组。常用的函数有三个:

(1)split函数,这个函数有三个参数。第一个参数ary就是被分割的数组,第二参数叫indices_or_sections:果是一个整数,就用该数平均切分,如果是一个数组,为沿轴切分的位置(左开右闭),第三个参数axis是按照哪个轴切分。

(2)hsplit函数,水平方向上切分。

(3)vsplit函数,竖直方向上切分。

A是一个4*4的二维数组,我们用了三种方式去分割。大家猜一猜有没有哪两个分割结果会一样?

运行结果:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 浊酒清味 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Introduction
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档