numpy

基本操作
np.arange 类似range,生成numpy数组
np.random.randn 按照shape生成随机正态分布的数据
arr.ndim 查看数组维度
arr.shape 查看数组每个维度的长度
arr.dtype 查看数组的类型
np.array 将输入数据转化为ndarray,不指定类型,则自动推断,默认复制所有输入数据
np.asarray 将输入转为ndarray,若输入已经是ndarray则不再复制
arr.astype 转换到指定数据类型
数组生成
np.ones 根据shape和dtype生成全1数组
np.ones_like 根据给定数组,生成一个shape一样的全1数组
np.zeros 全0
np.zeros_like 类似ones_like
np.empty 根据给定的shape和dtype生成空数组
np.empty_like 根据给定的数组,生成一个形状一样的空数组
np.full 同上,生成指定数组的数组
np.full_like 同上
np.eye 生成N*N的特征矩阵(即对角线都是1 ,其余全是0)
np.identity 同eye、

ndarray切片

numpy数组的切片与python内建列表的切片非常不一样,恰恰相反,numpy数组的切片是原数组的视图,也就是说当我们在数组的切片上做改变时,原数组上也会改变
arr[2:3].copy(): 如果需要复制的话,就要显示的使用copy方法
在不同维度上制作切片时,用逗号隔开

#如:
arr_1 = arr[:, :]

ndarray索引

ndarray的索引都是拷贝

布尔索引

使用布尔索引生成的是数据的拷贝,对原数据没有改变

神奇索引

直接将自己需要的数据的索引组成列表,再将列表传入当索引,直接可以选出自己想要的数据

import numpy as np

arr = np.empty((5,3))
for i in range(5):
    arr[i] = i
print(arr)
print("............")
print(arr[[1,3]])
print("............")
print(arr[[-1,-3]])

"""
out:
[[0. 0. 0.]
 [1. 1. 1.]
 [2. 2. 2.]
 [3. 3. 3.]
 [4. 4. 4.]]
............
[[1. 1. 1.]
 [3. 3. 3.]]
............
[[4. 4. 4.]
 [2. 2. 2.]]
"""

数组的转置和换轴

|

T方法 转置
transpose方法 换轴
swapaxes 接受一对轴编号作为参数,并对轴进行调整用于重组数据

通用函数

一元通用函数
abs, fabs 逐元素地计算整数,浮点数或复数的绝对值
sqrt 计算平方根
square 计算平方
exp 计算每个元素的自然指数值e^x
log,log10,log2,log1p 对数,底分别为:e,10,2。log1p为对数log(1+x)
sign 计算每个元素的符号值:1(正数),0,-1(负数)
ceil 计算最高整数值
floor 计算最小整数值
rint 将元素保留到整数位,并保留dtype
modf 将数组的小数部分和整数部分按数组形式返回
isnan 返回数组中的元素是否不是一个数值(是一个nan),返回布尔数组
isfinite, isinf 反别返回数组中元素是否有限(非inf,非NaN),是否无限的,返回布尔数组
cos,cosh,sin,sinh,tan,tanh 常规双曲三角函数
arc… 加上前缀arc变成反三角函数
二元通用函数
subtract 在第二个数组中,将第一个数组中包含的元素去除
divide,floor_divide 整除
power 将第二个数组的元素作为第一个数组对应元素的幂次方
maximum,fmax 逐元素计算最大值,fmax忽略NaN
minximum,fmin 逐元素计算最小值,fmin忽略NaN
mod 按元素的求模计算
copysign 将第一个数组的符号值改为第二个数组的符号值

np.where(x,y,c): 三目运算符,同“x if c else y”

面向数组编程

数组统计方法

sum 沿轴对所有元素进行求和
mean 数学平均,0长度数组的平均为NaN
std,var 标准差和方差,可以选择*度调整,默认分母为n
max,min 最大最小值
armax,armin 最大最小值的位置
cumsum 从0开始元素累积求和
cumprod 从1开始元素累积求积

布尔值数组的方法

在numpy中布尔值会被强制为1或者0,所有通常可以使用sum统计true的个数

arr.any() 检查数组中是否至少含有一个True(非0)
arr.all() 检查是否每一个值都为True(非0)

排序

np.sort()和python的sort方法有点不一样,np.sort是拷贝排序,而python自带的sort是直接在原序列上进行排序

唯一值与其他集合逻辑

unique(arr) 计算数组每个元素的唯一值,并排序
intersect1d(x,y) 计算x和y的交集,并排序
union1d(x,y) 计算x与y的并集,并排序
in1d(x,y) 计算x中的元素是否包含在y中,返回布尔值数组
setdiff1d(x,y) 差集,在x中但不在y中的x的元素
setxor1d(x,y) 异或集

使用数组进行文件输入输出

numpy可以在硬盘将数据以文本或者二进制文件的方式进行存储或读取,此刻只讨论二进制存读

np.save(filename, arr) 存储为以.npy为后缀的二进制文件
np.savez(filename, a=arr_a, b=arr_b…) 以键值字典的方式存储多个数组,读取时,并根据键获得对应数组
np.load(filename) 读取npy文件,获得一个数组型或者字典型的数据

Numpy的线性代数

常用的numpy.linalg函数
diag 将方阵的对角(或非对角)元素作为一维数组返回,或者将一维数组转换成方阵,并且在非对角线上有零点
dot 矩阵点乘
trace 计算对角元素和
det 计算矩阵的行列式
eig 计算方阵的特征值和特征向量
inv 计算方阵的逆矩阵
pinv 计算矩阵的Moore-Penrose伪逆
qr 计算QR分解
svd 计算奇异值分解(SVD)
solve 求解x的线性系统Ax = b,其中A是方阵
lstsq 计算Ax=b的最小二乘解

伪随机数生成

numpy.random函数中的部分函数
seed 向随机数生成器传递随机状态种子
permutation 返回一个序列的随机排序,或者返回一个乱序的整数范围内的序列
shuffle 随机排序一个序列
rand 从均匀分布中抽样样本
randint 根据给定的由低到高的范围抽取随机整数
randn 从均值0方差1的正态分布中抽样
binomial 从二项分布中抽样
normal 从正态分布中抽样
bata 从beta分布中抽样
chisquare 从卡方分布中抽样
gamma 从伽马分布中抽样
uniform 从均值[0.1)分布中抽样
上一篇:Prototypes analyze(二叉排序树,不同树形个数)


下一篇:机器学习 - 正态数据分布