《利用Python进行数据分析》笔记
1. 创建数组ndarray
- ndarray是N维数组对象, 快速而灵活的大数据集容器
- 其中所有元素的数据类型必须是相同的
- ndarray包括shape属性(各维度大小的元组)和dtype属性(数组数据类型)
ndarray创建函数 | 特点 |
---|
array | 支持列表,元组,数组或其他序列类型,可推断也可指定dtype |
arange | 相当于range,返回ndarray而非列表 |
zeros,zeros_like | 指定shape和dtype创建数组,以0填充;like表示以另一数组做参数创建 |
ones,ones_like | 同上,以1填充 |
empty,empty_like | 同上,无填充 |
eye,identity | 功能相同参数不同,创建N阶单位矩阵(仅对角线为1,其余为0) |
import numpy as np
# 创建基本数组
data1 = [6, 7.5, 8, 0, 1]
data2 = [[1, 2, 3, 4], [5, 6, 7, 8]]
arr1 = np.array(data2)
arrShape = arr1.shape # 数组大小(行,列)
arrDtype = arr1.dtype # 数组数据类型
print(f"数组:{arr1}\n数字大小:{arrShape}\n数组数据类型:{arrDtype}\n")
# 创造随机数的数组
from numpy.matlib import randn
arr=randn(3,2)#三行二列的正态分布随机数数组,平均值0,标准差1
# 创建特殊数组
arr2=np.zeros((2,3))#创建一个以0填充的2行3列数组
print(arr2)
2. ndarray常用数组数据类型
数据类型 | 形式 | 简写的类型代码 |
---|
浮点数 | float16,float32,float64,float128 | f2,f4,f8,f16 |
复数 | complex64,complex128,complex256 | c8,c16,c32 |
整数 | int8,int16,int32,int64 | i1,i2,i4,i8 |
布尔值 | bool | ? |
字符串 | string_ | S |
普通的Python对象 | object | O |
固定长度的unicode | unicode_ | U |
#查看数据类型dtype
arr=np.array([1,2,3,4,5])
print(arr.dtype)
#数据类型转换方式astype
arr2=arr.astype(np.float32)
3. ndarray索引和切片
- 支持类似List的索引和切片
- 与List区别在于,ndarray的修改会改变源数组
#索引矩阵按行列索引,[0][0]表示第一行第一列的数据
arr[0][0]
#:表示选取整个横轴,纵轴,数字表示该轴上的切片起始位置
arr[:,:1]
#支持布尔值,判断是否与字符串相等会对每个元素生成True或False
arr == 'hello'
#花式索引,选取第1,3,5行生成新数组,从0开始,支持-1
arr[[1,3,5]]
4. 转置
#T表示转置数组的视图,不会修改
arr.T
#transpose支持高维数组的转置
#swapaxes表示转置条件为几行几列
arr.swapaxes(1,2)
5. 常用函数
一元函数(参数为一个数组)
函数 | 功能 |
---|
abs,sqrt,square,exp | 计算每个元素的绝对值,平方根,平方,e指数 |
log,log10,log2 | 底e,10,2的对数 |
ceil,floor | 天花板,地板 |
sign | 计算元素符号,1为正,-1为负 |
rint | 四舍五入 |
modf | 整数和小数分两部分返回 |
isnan | 判断是NaN则返回True |
isfinite,isinf | 有穷,无穷 |
sin,cos,tan,arcsin,arccos,arctan | 三角函数 |
二元函数(参数为两个数组)
函数 | 功能 |
---|
add | 两个数组对应元素相加 |
subtract | 相减 |
multiply | 相乘 |
divide,floor_divide | 相除,舍弃余数的相除 |
power | 第一个参数为底,第二个参数为幂 |
maximum,fmax | 比较后返回最大值,fmax忽略NaN |
minimum,fmin | 最小值 |
mod | 第一个数组对第二个数组取模 |
copysign | 复制第二个数组的符号给第一个数组 |
greater,greater_equal ,less,less_equal ,equal,not_equal | 比较,返回布尔 |
logical_and,logical_or ,logical_xor | 逻辑,与或非 |
聚合函数
函数 | 功能 |
---|
sum | 全部元素或某个轴元素求和 |
mean | 算术平均数 |
std,var,max,min | 标准差,方差,最大值,最小值 |
argmax,argmin | 最大最小值的索引 |
cumsum,cumprod | 所有元素累积和和累积积 |
集合函数
函数 | 功能 |
---|
sort,sorted | 排序,可对某列操作 |
unique | 计算唯一元素,返回有序结果 |
interset1d | 交集 |
union1d | 并集 |
in1d | 返回布尔数组,判断两个数组元素是否包含关系 |
setdiff1d | 差集 |
矩阵函数
函数 | 功能 |
---|
diag | 将矩阵对角线元素以一位数组形式返回 |
dot | 矩阵相乘 |
trace | 对角线的和 |
det | 行列式 |
eig | 方阵的本征值和本征向量 |
inv | 方阵的逆 |
qr | QR分解 |
svd | 奇异值分解 |
solve | 解线性方程 |
lstsq | 最小二乘解 |
随机数生成函数
函数 | 功能 |
---|
seed | 种子 |
shuffle | 对序列进行随机排列 |
rand | 均匀分布 |
randint | 给定上下限的随机数 |
randn | 正态分布,平均值为0,标准差为1 |
binomial | 二项分布 |
normal | 正态分布 |
beta | Beta分布 |
chisquare | 卡方分布 |
gamma | Gamma分布 |
uniform | 在0,1之间的均匀分布 |