跟老齐学python数据分析_【有书共读】跟老齐学Python数据分析读书笔记01

1.创建数组 数组也是对象,与列表不同,数组的的元素的类型必须是相同的,且数组一旦确定,其轴的数量就不能再变化。创建数组大致有以下三种方法。

1.1 np.array()创建数组

1.1.1创建一维数组

Array1=np.array([1,2,3,4]);这条语句创建了一个有四个元素(整数)组成的一维数组。

Array=np.array(Array1,dtype=float) 这条语句创建了一个有四个元素(整数)组成的一 维数组,它的各个元素是为浮点数。

当定义数组时未显式指定dtype时,NumPy会自行推断元素类型。

1.1.2 创建二维数组

Array2=np.array([[1,2,3,4],[1,2,3,4]]); 此处创建了一个二维数组。

Array2=np.array([1,2,3,4],ndim=2);此处创建的也是一个二维数组

1.1.3 创建三维数组

Array3=np.array([[1,2,3,4],[1,2,3,4]]);

Array4=np.array([[4,5,16,7,3],[5,2,3,8]]);

MutiArray=np.array([Array3,Array4]),此处的MutiArray便是一个三维数组。

注意: 当向np.array()中传入列表的时候,列表中各个元素的长度应一致,否则系统可能不会报错,但是最终得到的数组对象可能并不是我们想要的。如定义时使用arrayTest=np.array([[1,2,3],[4,5,6,7],[11,12]]);输出arrayTest的时候,其结果如下:array([list([1,2,3]),list(4,5,6,7),list(11,12)]);

1.2 用函数创建数组

1.2.1 np.zeros((shape,dtype=arrayType,order=’C’)) 它创建一个完全由0组成的数组,shape是以元组形式声明此数组的形状,arrayType是元素的类型,order后的值是其在数据存储区的排列的格式,‘C’是按行排,‘F’是按列排,默认order=’C’.

ArrayTest=np.zeros((2,3),dtype=float,order=’C’);定义了一个输出如下所示的二维数组:

array([[0.,0.,0.],[0.,0.,0.]]);

1.2.2下表中列出的是NumPy中创建特殊数组的函数:

函数

说明

asarray

输入列表、元组或由它们组成的嵌套对象或数组,返回一个数组。如果输入参数是数组,则返回此数组本身

arange

根据开始值、结束值和步长创建一个数组

ones、ones_like

ones根据指定的形状(元组方式)和元素类型,创建元素值为1的数组,ones_like创建一个与指定数组完全一样但元素值都为1的数组

zeros、zeros_like

与上雷同,但元素值都是0

Empty、empty_like

同上,但没有填充任何元素数据,但分配了内存空间

Eye、identity

创建对角线元素是1其它元素是0的二维数组

diag

创建对角线元素是指定值其它元素是0的二维数组

linespace

根据开始值、结束值元素是等差数列的数组

logspage

根据开始值、结束值、元素数量和对数底创建元素是等比数列的数组

1.2.3除了上述的函数,还可以用

dir(

np)命令显示出的

from开头的方法创建数组,如

frombuffer、

fromfile、

fromfunction、

fromregex、

fromstring等。

1.3 使用np.dtype()创建自定义类型的数组

首先,我们创建自定义类my_type如下所示

my_type=np.dtype({“names”:[‘book’,’version’],”formats”:[‘S40’,np.int]});或者

my_type=np.dtype([(‘book’,’S40’),(‘version’,np.int)]);

然后,我们就可以定义元素为my_type类型的数组了:

my_books=np.array([“bookname1”,1],[“bookname2”,2],dtype=my_type)

2.查看数组属性

2.1查看当前对象属性和方法:dir(array)或array?

2.2数组元素的类型:array.dtype

2.3数组的形状array.shape

2.4数组的维度

array.ndim

3. 数组的轴

生活中,我们描述矩阵的形状用一维、二维和三维等等,对应的其大小会用n1 X n2 X n3……去描述,numpy中的数组就通过ndim和shape来为我们描述一个数组的维度和大小。

下图描述了了一个二维数组的维度和大小:

同样的道理,为了能唯一访问到高维数组中某个元素,必须指明每一个维度的值,我们可以试试对于上述

2

维数组用不同维度去访问,其中最后两种访问形式是等价的:

4. 快速生成数组

一般的做法是我们生成一维数组,然后通过reshape方法将其变成我们想要的形状的数组,而一维数组的生成可以用arange函数(生成指定范围内的整数数组)、linspace函数(在一定范围内生成指定个数的小数数组)。

5. 切片

Python中list对象一个很重要的特征就是切片,同样的,在numpy的数组也支持切片,但是list的切片生成的是原对象的一个copy,numpy数组生成的切片中的元素是共享内存的。

6. 数组的变形

之前我们已经用过了reshape方法去改变一个数组的形状,但我们也可以通过改变数组对象的shape属性来改变数组的形状。

反过来,如果我们要将高维数组变成一维数组可以通过flatten()和reval()函数,不过前者是返回原对象的一个copy,后者却是和父本的元素共享同一个内存空间。

7. 数组的组合和分割

在我们将来进行数组分析的时候,可能会将不同的数组进行组合和分割,所以,numpy也为我们准备了对应的函数。

hstack()函数内帮我们将多个数组沿1轴(水平方向)的方式连接起来,其作用类似于在concatenate函数中指明axis=1(在numpy中,很多操作都是和轴有关的,axis=0表示0轴,即按行的方式)。同样的道理,我们可以用vstack()函数将数组沿0轴(垂直方向)连接起来,下图只给出水平方向的实例,大家可以去试试垂直方式的用法。

会了组合,那么也就不应该忘了分割,即split()函数,同样的,必须要指明该函数的按什么轴去分割,即axis的值,当axis=0时,等价垂直分割函数vsplit();当axis=1时,等价水平分割函数hsplit()。

7. 数组的改编

作者把“改编”定义为包括添加、插入、删除这3个操作的统一说法,numpy中这3个操作分别对应于append()、insert()和delete()3个函数。使用这3个函数如果不声明轴axis的值,生成的将是改编后数组的一维数组形式,无论之前是多少维的,此时,就相当于改编后又调用了flatten()函数,具体用法可以参照下图:

8. 数组的运算

Numpy的诞生本就为了科学计算和数值处理,所以,我们想对整个数组进行加减乘除等运算时,直接把每个数组变量看成一个普通的数字就行了。

不仅是简单的加减乘除,他还支持指数运算、对数运算、三角函数等多种运算(下图最后一个事例因为计算了log10(0)发生了错误……)

限于篇幅,无法一一演示所有函数,这里给出一个总结了大量numpy数学函数的博客链接:

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值