数据分析之NumPy
一:NumPy的介绍
NumPy是用于科学计算的一个开源Python扩充程序库,它为Python提供了高性能的数组与矩阵运算处理能力,NumPy为Python带来了真正的多位数组功能,并且提供了丰富的函数库处理这些数组。常用的数学函数都支持向量化运算,使得这些数学函数能够直接对数组进行操作,将本来需要在Python级别进行的循环放到C语言的运算,明显的提高了程序的运算速度。
简单来说,NumPy是高性能科学计算和数据分析的基础包,它是pandas等其他各种工具的基础。
二:NumPy的基本使用
安装方法:pip install numpy
引用方式:import numpy as np
NumPy的核心功能是“ndarray”(即n-dimensional array,多维数组)数据结构。
特点:
连续内存分配、向量化操作、布尔选择、分片(sliceability)
NumPy的主要功能:
ndarray,一个多位数组结构,高效且节省空间
无需循环对数组数据进行运算
读写磁盘数据的工具以及用于操作内存映射文件的工具
线性代数、随机数生成和傅里叶变换功能
用于继承C、C++等代码的工具
三:ndarray基本属性
1:基本属性
ndarray.ndmin数组轴的个数
ndarray.shape数组的维度,这是一个指示数组在每个维度上大小的整数元祖。例如一个n排m列的矩阵,它的shape属性将是(2,3)
ndarray.size数组个数的总个数,等于shape属性中元祖元素的乘积。
ndarray.dtype一个用于描述数组中元素类型的对象,可以创造或指定dtype使用标准Python类型。另外NumPy提供它自己的数据类型。
ndarray.itemsize数组中每个元素的字节大小,例如,一个元素类型为float64的数组,itemsize属性值为8(64/8),又如,一个元素类型为complex32的数组item属性为4(32/8)
T :数组的转置(对高维度数组而言)
dtype: 数组元素的数据类型
size:数组元素的个数
2:NumPy: ndarray 多维数组对象
创建ndarray:
array(): 将列表转换为数组,可选择显示指定dtype
arange(): range 的NumPy版,支持浮点数
linspace(): 类似arange(),第三个参数为数组长度
zeros(): 根据指定形状和dtype创建全0数组
ones(): 根据指定形状和dtype创建全1数组
reshape(): 更改数组的维度
.ndim :维度 .shape :各维度的尺度 (2,5) .size :元素的个数 10 .dtype :元素的类型 dtype(‘int32’) .itemsize :每个元素的大小,以字节为单位 ,每个元素占4个字节 ndarray数组的创建 np.arange(n) ; 元素从0到n-1的ndarray类型 np.ones(shape): 生成全1 np.zeros((shape), ddtype = np.int32) : 生成int32型的全0 np.full(shape, val): 生成全为val np.eye(n) : 生成单位矩阵 np.ones_like(a) : 按数组a的形状生成全1的数组 np.zeros_like(a): 同理 np.full_like (a, val) : 同理 np.linspace(1,10,4): 根据起止数据等间距地生成数组 np.linspace(1,10,4, endpoint = False):endpoint 表示10是否作为生成的元素
.reshape(shape) : 不改变当前数组,依shape生成
.resize(shape) : 改变当前数组,依shape生成
.swapaxes(ax1, ax2) : 将两个维度调换
.flatten() : 对数组进行降维,返回折叠后的一位数组
数据类型的转换 :a.astype(new_type) : eg, a.astype (np.float)
数组向列表的转换: a.tolist()
a = np.array ([9, 8, 7, 6, 5, ])
a[1:4:2] –> array([8, 6]) : a[起始编号:终止编号(不含): 步长]
a = np.arange(24).reshape((2, 3, 4))
a[1, 2, 3] 表示 3个维度上的编号, 各个维度的编号用逗号分隔
a [:,:,::2 ] 缺省时,表示从第0个元素开始,到最后一个元素
np.abs(a) np.fabs(a) : 取各元素的绝对值 np.sqrt(a) : 计算各元素的平方根 np.square(a): 计算各元素的平方 np.log(a) np.log10(a) np.log2(a) : 计算各元素的自然对数、10、2为底的对数 np.ceil(a) np.floor(a) : 计算各元素的ceiling 值, floor值(ceiling向上取整,floor向下取整) np.rint(a) : 各元素 四舍五入 np.modf(a) : 将数组各元素的小数和整数部分以两个独立数组形式返回 np.exp(a) : 计算各元素的指数值 np.sign(a) : 计算各元素的符号值 1(+),0,-1(-) . np.maximum(a, b) np.fmax() : 比较(或者计算)元素级的最大值 np.minimum(a, b) np.fmin() : 取最小值 np.mod(a, b) : 元素级的模运算 np.copysign(a, b) : 将b中各元素的符号赋值给数组a的对应元素
sum(a, axis = None) : 依给定轴axis计算数组a相关元素之和,axis为整数或者元组 mean(a, axis = None) : 同理,计算平均值 average(a, axis =None, weights=None) : 依给定轴axis计算数组a相关元素的加权平均值 std(a, axis = None) :同理,计算标准差 var(a, axis = None): 计算方差 eg: np.mean(a, axis =1) : 对数组a的第二维度的数据进行求平均 a = np.arange(15).reshape(3, 5) np.average(a, axis =0, weights =[10, 5, 1]) : 对a第一各维度加权求平均,weights中为权重,注意要和a的第一维匹配 min(a) max(a) : 计算数组a的最小值和最大值 argmin(a) argmax(a) : 计算数组a的最小、最大值的下标(注:是一维的下标) unravel_index(index, shape) : 根据shape将一维下标index转成多维下标 ptp(a) : 计算数组a最大值和最小值的差 median(a) : 计算数组a中元素的中位数(中值)
详细方法链接:http://www.cnblogs.com/TensorSense/p/6795995.html
四:Anaconda的安装及使用
1:anaconda是什么?
anaconda是Python的包管理器和环境管理器。
2:为什么用anaconda?
anaconda附带了一大批常用数据科学包,附带了conda、Python和150多个科学包及其依赖项。提供包管理功能,使得Windows平台安装第三方包经常失败的场景得以解决。提供环境管理功能,解决多版本Python并存、切换的问题。
3:安装
官网下载安装包:官网地址https://www.anaconda.com/download/
值得注意的是anaconda没有快捷方式(pip3 install IPython,更加方便运行)
tips:什么是Jupyter Notebook?
前身是IPython notebook,是一个开源的web application,可以创建和分享包含代码,视图,注释的文档,也可以用于数据统计,分析,建模,机器学习等领域。