1. NumPy简介
NumPy ( Numerical Python) 是高性能科学计算和数据分析的基础包. 其部分功能如下:
ndarry: 一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组.
用于对整数进行快速运算的标准数学函数
用于读写磁盘数据的工具以及用于操作内存映射文件的工具
线性代数,随机数生成以及傅立叶变换功能
用于集成由C, C++, Fortran 等语言编写的代码的工具
2. ndarry: 一种多维数组对象
(1) 创建ndarry
data1 = [6, 7.5, 8, 0 ,1]
arr1 = np.array(data1)
嵌套序列:
data2 = [[1, 2, 3, 4], [5, 6, 7, 8]]
arr2 = np.array(data2)
数组行和大小:
数据类型:
数组创建函数:
array 将输入数据( 列表, 元组, 数组或其他序列类型) 转换为 ndarray. 要么推断出dtype, 要么显示指定dtype . 默认直接复制输入数据.
asarray 将输入转换为ndarray, 如果输入本身就是一个ndarray就不进行辅助
arange 类似于内置的range, 但返回的是一个ndarray而不是列表
ones, ones_like 根据指定的形状和dtype创建一个全1数组. Ones_like 以另一个数组为参数, 并根据其形状和dtype创 建一个1数组
zeros, zeros_like 类似于ones和ones_like, 只不过产生的全是1数组
empty, empty_like 创建数组, 之分配内存空间但不填冲任何值
eye, identity 创建一个正方的NXN单位矩阵(对角线为1, 其余为0)
(2) ndarray 的数据类型
int8, uint8 i1, u1 有符号和无符号的8位(1个字节)整型
int16, uint16 i2, u2 ............................16.. 2...................
int32, uint32 i4, u4 ............................32...4...................
int64, uint64 i8, u8 ............................64...8...................
float16 f2 半精度浮点数
float32 f4或f 标准的单精度浮点数, 与C的float兼容
float64 f8或d 标准的双精度浮点数. 与C的double和python的float对象兼容
float128 f16或g 扩展精度浮点数
complex64, complex128 c8, c16 分别用两个32位, 64位或者128位浮点数表示的复数
complex256 c32
bool ? 存储True和False值的布尔类型
object O python对象类型
string_ S 固定长度的字符串类型(每个字符1个字节).例如,要创建一个长度为10的字符串, 应使用S10
unicode_ U 固定长度的unicode1类型( 字节数由平台决定). 跟字符串的定义方式一样(如 u10)
类型转换:
asType()
( 3 ) 数组和标量之间的运算
( 4 ) 基本的索引和切片
Numpy数组的索引是一个非常丰富的主题
当将一个标量值赋值给一个切片时(如arr[5:8] = 12), 该值会自动传播到整个选区.
数组切片是原始数组的视图, 这意味着数据不会被复制, 视图上的任何修改都会直接反映到源数组.
( 5 ) 数学和统计方法
sum 对数组中全部或某轴向的元素求和.零长度的数组的sum为0
mean 算术平均数. 零长度的数组的mean为NaN
std, var 分别为标准差和方差,自由度可掉( 默认为n )
min, max 最大值和最小值
argmin, argmax 分别为最大和最小元素的索引
cumsum 所有元素的累计和
curpro的 所有元素的累计积
( 6 ) 用于布尔型数组的方法
上面的方法中,布尔值会被强制转换为1和0.
any 测试数组中是否存在一个或多个True
all 监测数组中所有值是否都是True
( 7 ) 排序
sort 不带参数全排序, 也可将指定要排序的轴.
np.sort 返回的是数组的已排序副本, 而就地排序则会修改数组本身.
( 8 ) 唯一化以及其他的集合逻辑
np.unique, 用于找出数组中的唯一值并返回已排序的结果.
intersect1d(x, y) 计算x和y中的公共元素, 并返回有序结果
uniod1d(x, y) 计算x和y的并集, 并返回有序结果
in1d(x, y) 得到一个表示 " 得x的元素是否包含于y" 的布型数组
setdiff1d(x, y) 集合的差, 集元素在x中不在y中
setor1d(x, y) 集合的对称差, 即存在于一个数组中但不同时存在于两个数组中的元组
( 9) 用于数组的文件输入输出
( 10 ) 将数组以二进制格式保存到磁盘
np.save('filename', arr) 如果文件路径末尾没有扩展名.npy, 则扩展名会被自动加上.
np.load('filePath')
np.savez('filename.npz', a= arr, b=arr) 将多个数组保存到一个压缩文件中, 将数组以关键字的形式传入
arch = np.load('filename.npz')
arr = arch['a']
( 11 ) 存取文本文件
np.loadtxt('filepath', delimiter=',')
np.savetxt()
3. 线性代数
diag 以一维数组的形式返回方阵的对角线(或非对角线) 元素, 或将一维数组转换为方阵
dot 矩阵乘法
trace 计算对角线元素的和
det 计算矩阵行列式
eig 计算方阵的本征值和本征向量
inv 计算方阵的逆
pinv 计算矩阵的Moore-Penrose伪逆
qr 计算QR分解
svd 计算奇异值分解 ( SVD )
solve 解线性方程组Ax = b, 其中A为一个方阵
lstsq 计算Ax = b 的最小二乘解
4. 随机数生成
seed 确定随机数生成器的种子
permutation 返回一个序列的随机排列或返回一个随机排列的范围
shuffle 对一个序列就地随机排序
rand 产生均匀分布的样本值
randint 从给定的上下限范围内随机选取整数
randn 产生政态分布 ( 平均值为0,标准差为1 ) 的样本值, 类似于MATLAB 接口
binomial 产生二项分布的样本值
normal 产生正态( 高斯 ) 分布的样本值
beta 产生Beta 分布的样本值
chisquare 产生卡方分布的样本值
gamma 产生Gamma分布的样本值
uniform 产生在[0, 1) 中均匀分布的样本值