Numpy(下)

引言:回顾和概览

Numpy是一个科学计算包。如果你做数据清洗、整合的时候,不一定用到,直接用Pandas就好,Numpy是一个科学计算包,这个包里面的数据类型一种,就是ndarray,所有的计算都是基于这个数据类型,首先就是把其他的数据类型转换为ndarray。在数据类型里,整数32,浮点型32/64先掌握,类型的查看需要掌握,改变数据类型用astype。

矢量化运算比较重要,非常简化了运算。创建常用数组,不是用矩阵运算用的不是很多。空值经常用到。随机数组比较重要,在np.random模块下,你可以做一个文档记一下,比如randint是整数,你只要知道这个包里有什么功能,具体的参数现查就可以,大概知道单词怎么拼就行,实在不行百度也可以。随机数种子比较重要,实现随机的数据是相同的。常用属性中,shape比较常用。

数组的索引和切片是重点。二维的,用逗号分开,定位出一块,定位到行和列,交叉就是定位的坐标。

完全不复制、完全复制和浅复制主要是理解:

  完全不复制:a=b(没有区别)

  完全复制(深复制):所有的都复制新的,跟原来的没有任何关系。

  浅复制(视图):多层的时候,只复制最前面的第一层

 

数组的变形元素的顺序是不变的,某一个维度可以用-1代替(小技巧)。resize和reshape是有区别的。ravel是拉伸为一维,转置也比较重要。变形这一块是比较重要的。数组的拼接和分裂,需要掌握。concatenate连接的意思,这里涉及一个新参数,axis,默认的是0。分裂split,第二个参数支持整数和一维数组,列表和元组都可以,效果是一样的。整数代表均分,前提是可以均分。第二个是指定切分。广播和浅复制一样,理解就可以。
 
Numpy运算:整除A//B、取余A%B……
常用函数
规约函数
 
重点:变形有关的,广播原理, 运算函数, 规约函数(对于轴axis 的理解) 
 

一、数组的变形

reshape:请注意,如果希望该方法可行,那么原始数组的大小必须和变形后数组 的大小一致。如果满足这个条件,reshape 方法将会用到原始数组的一 个视图。

resize :可以直接修改数组本身。

无论是ravel(拉伸)、reshape、T,它们都不会更改原有的数组形状,都是返回一个新的数组。也就是我们之前学过的浅复制。

二、数组的拼接

拼接或连接 NumPy 中的两个数组主要由 np.concatenate实现。axis这里是轴的概念。

三、数组的分裂

使用split,可以指定均匀切割成几份,也可以指定沿着哪个位置进行切割, 还可以指定沿着哪个轴进行切割.

np.split(ary, indices_or_sections, axis=0)

#indices_or_sections当这个参数为整数时,沿着指定的轴,将数组均匀切分

np.split(k,2) #默认axis=0  

np.split(k,1,axis=1)

#指定的切分,传的就不是整数,而是索引值

np.split(k,[1])

np.split(k,[1,3])

四、广播机制

我们都知道,Numpy中的基本运算(加、减、乘、除、求余等等)都是元素级别的,但是这仅仅局限于两个数组的形状相同的情况下。

可是大家又会发现,如果让一个数组加1的话,结果是整个数组的结果都会加1,这是什么情况呢?

 

 五、Numpy运算

1.基本运算

Numpy 中数组上的算术运算符使用元素级别。最后的结果使用新的一个数组来返回。

需要注意的是,乘法运算符*的运算在NumPy数组中也是元素级别的(这与许多矩阵语言不同)。如果想要执行矩阵乘积,可以使用dot函数。

2.常用函数

3.规约函数

下面所有的函数都支持axis来指定不同的轴,用法都是类似的。这个是比较重要的,就是统计函数!

4.掩码提取

#你想提取什么,都可以通过创建布尔数列完成。

and 与 &
or  或 |
not 非 ~

#提取所有小于5的偶数数据
k[ (k<5) & (k%2 ==0) ]

掩码比较重要,在Pandas用的比较多。

 

 

 
 
posted @ 2019-10-15 09:58  小稣  阅读(196)  评论(0编辑  收藏  举报