python 数据分析
IPython
变量名? 函数名?获取相关帮助
%run [文件名].py 执行py文件
数据的维度:一组数据的组织形式
列表和数组:
一组数据的有序结构
区别:
列表:数据类型可以不同
数组:数据类型相同
一维数据:列表(有序)、集合(无序)
二(多)维数据:多维列表
高维数据:字典类型、数据表示格式JSON、XML
NumPy科学计算基础库
N维数组对象ndarray
广播功能函数
整合C/C++/Fortran代码的工具
线性代数、傅里叶变换、随机数生成等功能
import numpy as np
为什么需要数组类型?
数组对象可以去掉元素间运算所需循环,使一维向量更像单个数据。
设置专门的数组对象,经过优化,可以提升这类应用的运算速度。
数组对象采用相同的数据类型,有助于节省运算和存储空间。
ndarray是一个多维数组对象,由两部分构成:
1.实际的数据
2.描述这些数据的元数据(数据维度、数据类型)
ndarray要求数据元素类型相同,数组下标从0开始
np.array()#生成一个ndarray数组
轴(axis):保存数据的维度
秩(rank):轴的数量
属性:
.ndim #秩(轴的数量) .shape #ndarray对象的尺度,n行m列 .size #ndarray对象元素个数 n*m .dtype #ndarray元素类型 .itemsize #ndarray中每个元素的大小
ndarry 元素类型
bool intc intp int8 int16 int32 int64
uint8 uint16 uint32 uint64
float16 float32 float64
complex64(实部虚部都是float32) complex128
python语法仅支持整数、浮点数、复数3种类型
科学计算涉及数据较多,对存储和性能都有较高要求
对元素类型精细定义,有助于NumPy合理使用存储空间并优化性能
对元素进行精确定义,有助于程序员对程序规模有合理评估
ndarray也可以由非同质对象构成,默认元素为对象类型
ndarray数组创建方法:
从Python中的列表、元组等类型创建ndarray数组
X = np.array(list/tuple)
X = np.array(list/tuple,dtype =np.float32)指定数据类型
使用NumPy中函数创建ndarray数组,如:arange,ones,zeros
np.arange(n) 元素从 0到 n-1 整数类型
np.ones(shape) 根据shape生成一个全一数组 shape是元组类型
np.full(shape,val) 每个元素都是val
np.eye(n) n*n单位矩阵
np.ones_like(a) 生成跟a形状相同的全一数组
np.zeros_like(a)
np.full_like(a,val)
np.linspace(a,b,n) 根据起止数据a,b等距地生成n个数据,形成数组
np.linspace(1,10,4) 1,4,7,10
endpoint 代表结尾数据是否作为最后一个元素出现
np.concatenate() 将两个或多个数组合并成一个新的数组
从字节流(raw bytes)中创建ndarray数组
从文件中读取特定格式,创建ndarray数组
维度变化:
.reshape(shape) 不改变数组元素,返回一个shape形状的数组,原数组不变
.resize(shape) 与reshape一致,修改原数组
.swapaxes(ax1,ax2)将数组n个维度中的两个维度进行调换
.flatten() 对数组进行降维,多维变为一维,原数组不变
ndarray数组类型变换:
new_a =a.astype(new_type) 一定会创建新数组
ndarray数组转为list
a.tolist()
操作:
索引:获取数组中特定位置元素
切片:获取数组中元素子集
一维数组:
索引:同列表
切片:a[起始编号:终止编号(不含):步长]
多维数组:
索引:a[x,y,z,...]
切片:a[:,1:3,:]
运算:
数组与标量进行运算
a.mean()获得平均值
np.abs(x) np.fabs(x)
np.sqrt(x)
np.square(x) 平方
np.log(x) np.log10(x) np.log2(x)
np.ceil(x) np.floor(x)
np.rint(x)计算数组各元素四舍五入的值
np.modf(x) 将数组各元素的小数与整数以两个独立数组的形式返回
np.cos(x) np.cosh(x)
np.sin(x) np.sinh(x)
np.tan(x) np.tanh(x)
np.exp(x)
np.sign(x)
二元函数:
+ - * / ** 两个数组各元素进行对应运算
np.maximum(x,y) np.fmax()
np.minimum(x,y) np.fmin() 元素级最大值,最小值计算
np.mod(x,y) 元素级模运算
np.copysign(x,y)将数组y中各元素值的符号赋值给数组x对应元素
>< >= <= == != 算术比较,产生布尔数组