您的位置:首页 > 编程语言 > Python开发

利用Python进行数据分析笔记-第四章Numpy

2017-12-07 18:10 756 查看
Numpy的ndarray:一种多维数组对象,其中的所有元素必须是相同类型的

nadrray的’+’,’-‘,’*’,’/’以及shape(表示数组维度的元组)和dtype(说明数组数据类型)的属性





创建ndarray

1.使用array(),传入序列型对象,产生含有传入数据的Numpy数组:



注意,除非显示说明,np.array会尝试为新建的数组推断一个较为合适的数据类型,保存在dtype对象中。

2.使用一些函数创建数组,如zeros,ones,empty,arange(不能传入元组,与range用法相同,只不过得到的为数组)等,传入参数为表示形状的元祖,数组维度与元组中元素个数相同:



常用数组创建函数(如果没有特别指定,数据类型基本都是float)



ndarray的数据类型

dtype是一个特殊的对象,它含有ndarray将一块内存解释为特定数据类型所需的信息





通过ndarray的astype显示转换dtype



两点需要注意:

1.浮点数转换为整数会截断

2.如果为数字字符串,那么可以转换为数值形式

3.调用astype会创建出新数组(原始数据拷贝),即使新dtype跟老dtype一样也是这样

dtype的另外用法

用其他数组的dtype转换当前数组的类型



基本的索引和切片



注意:数组切片为原数组的视图,视图上的任何修改会直接反映到源数组上。由于Numpy的设计目的是处理大规模数据,过多的复制会产生性能和内存问题。

二维数组索引方式



切片索引



布尔型索引



注意:

可以使用逻辑运算符&和|,不能使用and和or

通过布尔型数组设置值



花式索引

使用数组索引访问行子集:



选取矩阵行列子集:



使用np.ix选取矩阵行列子集:



数组转置

arr.T

通用函数:快速的元素级数组函数

一元ufunc:



二元ufunc:







运用numpy.where()将条件逻辑表述为数组运算





数学和统计方法



注意:这些聚合函数既可以当做数组的实例方法调用,也可以numpy.xx()调用



用于布尔型数组的方法

计算正数的数量:



any()和all():



排序



注意:使用np.sort()返回数组副本,而通过arr.sort()则修改数组本身

利用sort()选取分位数:



唯一化以及其他的集合逻辑

使用np.unique()将一维数组唯一化并排序:



使用np.in1d()测试arr1中的元素是否在arr2中:





用于数组的文件输入输出

将数组以二进制格式保存到磁盘

np.save(),np.load()



图为保存数组后获得的npy文件



np.savez(),np.load(),通过键值对的方式批量存取数组



存取文本文件

np.loadtxt()

测试文件:





线性代数

np.dot(),矩阵乘法



二维数组和一维数组做点积得到一维数组:





随机数生成

np.random.normal()



可以看出,np.random.normal比Python原生的random.normalvariate快很多

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: