Numpy常用属性和方法
# Numpy常用属性和方法
# 属性;
data.shape #用来表征数组每个维度的数量。
data.dtype #用来描述数组的类型
data.ndim #用来查看数据的维度
# 方法:
.reshape(())
# 生成ndarray
np.array #将输入数据(列表,元组,数据以及其他序列)转换为ndarray,默认复制所有输入的数据
np.asarray #将输入转换为ndarray.但如果输入已经是ndarray则不再复制
np.ones #根据给定形状和数据类型生成全1数组
np.ones_like #根据给定的数组生成一个形状一样的全1数组
np.zeros #根据给定形状和数据类型生成全0数组
np.zeros_like #根据给定的数组生成一个形状一样的全0数组
np.empty #根据给定形状生成一个没有初始化数值的空数组
np.empty_like #根据所给数组生成一个形状一样但没有初始化数值的空数组
np.full #根据给定形状和数据类型生成指定数值的数组
np.full_like #根据给定的数组生成一个形状一样但内容是指定数值的数组
np.eye #生成一个N*N的特征矩阵
# 数组的类型:
float f2 f4 f8 f16
bool ?
object O
string S
# 数组的类型转换: data.astype(np.float64 / data.dtype)
# 数组算术
同尺寸数组的比较运算 :产生一个bool数组
# 布尔索引
布尔数组的长度必须和数组轴索引长度一致
names = np.array(['Bob','Joe','Bob','Will','Will','Joe','Joe'])
data = np.random.randn(7,4)
names
array(['Bob', 'Joe', 'Bob', 'Will', 'Will', 'Joe', 'Joe'], dtype='<U4')
data
array([[ 0.12321991, -1.09632626, -0.30461838, 2.48481254],
[ 0.9913972 , 0.88999478, -0.47208552, -0.26930907],
[-2.33000677, -0.1476485 , -0.59621164, 1.89350542],
[-0.02867256, 0.23359139, -0.3729644 , -1.91841038],
[ 0.80456444, -0.02035105, 1.38518404, 1.25534382],
[-0.77081481, -0.75201718, -0.50267916, -0.4025687 ],
[-1.34663732, -0.5083561 , 1.0521195 , 0.80214868]])
names == 'Bob'
array([ True, False, True, False, False, False, False])
data[names == 'Bob']
array([[ 0.12321991, -1.09632626, -0.30461838, 2.48481254],
[-2.33000677, -0.1476485 , -0.59621164, 1.89350542]])
data[names == 'Bob',2]
array([-0.30461838, -0.59621164])
data[names == 'Bob',2:]
array([[-0.30461838, 2.48481254],
[-0.59621164, 1.89350542]])
data[~(names == 'Bob')] #使用 != 或者在条件表达式前加 ~ 对条件取反
array([[ 0.9913972 , 0.88999478, -0.47208552, -0.26930907],
[-0.02867256, 0.23359139, -0.3729644 , -1.91841038],
[ 0.80456444, -0.02035105, 1.38518404, 1.25534382],
[-0.77081481, -0.75201718, -0.50267916, -0.4025687 ],
[-1.34663732, -0.5083561 , 1.0521195 , 0.80214868]])
mask = (names == 'Bob') | (names == 'Will') ***#当要选择多个值时,对多个布尔值条件联合,用and(&)和 or(|)***
mask
array([ True, False, True, True, True, False, False])
data[mask]
array([[ 0.12321991, -1.09632626, -0.30461838, 2.48481254],
[-2.33000677, -0.1476485 , -0.59621164, 1.89350542],
[-0.02867256, 0.23359139, -0.3729644 , -1.91841038],
[ 0.80456444, -0.02035105, 1.38518404, 1.25534382]])
data[data<0] = 0 #通过布尔赋值
data
array([[0.12321991, 0. , 0. , 2.48481254],
[0.9913972 , 0.88999478, 0. , 0. ],
[0. , 0. , 0. , 1.89350542],
[0. , 0.23359139, 0. , 0. ],
[0.80456444, 0. , 1.38518404, 1.25534382],
[0. , 0. , 0. , 0. ],
[0. , 0. , 1.0521195 , 0.80214868]])
# 转置和换轴 data.transpose() 和特殊的T属性 data.T 和 data.swapasxes(一对轴编号)
data
array([[ 0.66837421, 0.89010689, -0.01424221, 0.90782448],
[ 0.37356741, -0.07476905, -0.3653412 , 1.01533556],
[-0.0802038 , 0.17349197, -1.599615 , 0.56571188],
[-1.28334251, 0.81426487, -0.923576 , 1.34439761],
[ 0.55554439, -0.0075288 , -0.51077055, 1.62667747],
[-0.72533576, -0.89991397, 0.17066818, -0.64373175],
[ 0.80755579, -1.0907833 , -0.03899747, 0.61250142]])
data.T
array([[ 0.66837421, 0.37356741, -0.0802038 , -1.28334251, 0.55554439,
-0.72533576, 0.80755579],
[ 0.89010689, -0.07476905, 0.17349197, 0.81426487, -0.0075288 ,
-0.89991397, -1.0907833 ],
[-0.01424221, -0.3653412 , -1.599615 , -0.923576 , -0.51077055,
0.17066818, -0.03899747],
[ 0.90782448, 1.01533556, 0.56571188, 1.34439761, 1.62667747,
-0.64373175, 0.61250142]])
data.transpose((1,0))
array([[ 0.66837421, 0.37356741, -0.0802038 , -1.28334251, 0.55554439,
-0.72533576, 0.80755579],
[ 0.89010689, -0.07476905, 0.17349197, 0.81426487, -0.0075288 ,
-0.89991397, -1.0907833 ],
[-0.01424221, -0.3653412 , -1.599615 , -0.923576 , -0.51077055,
0.17066818, -0.03899747],
[ 0.90782448, 1.01533556, 0.56571188, 1.34439761, 1.62667747,
-0.64373175, 0.61250142]])
data.swapaxes(1,0)
array([[ 0.66837421, 0.37356741, -0.0802038 , -1.28334251, 0.55554439,
-0.72533576, 0.80755579],
[ 0.89010689, -0.07476905, 0.17349197, 0.81426487, -0.0075288 ,
-0.89991397, -1.0907833 ],
[-0.01424221, -0.3653412 , -1.599615 , -0.923576 , -.51077055,
0.17066818, -0.03899747],
[ 0.90782448, 1.01533556, 0.56571188, 1.34439761, 1.62667747,
-0.64373175, 0.61250142]])
# 通用函数
# 一元通用数学函数
abs 逐元素计算整数,浮点数,复数的绝对值
sqrt 计算每个元素的平方根
square 计算每个元素的平方
exp 计算每个元素的自然指数值
log log10 log2 log1p 计算元素的对数
sign 计算每个元素的符号值:1(正数),0(0),-1(负数)
ceil 计算每个元素的最高整数值
floor 计算每个元素的最小整数值
rint 将元素保留到整数位,并保持dtype
modf 分别将数组的小数部分和整数部分按数组的形式返回
isnan 返回数组中的的元素是否是一个Nan,形式为布尔值数组
isfinite isinf 分别返回数组中的元素是否有限,是否无限的,形式为布尔值数组
cos cosh sin 常规的双曲线函数
sinh tan tanh
logical_not 对数组的元素按位取反(与-arr效果一致)
# 将条件逻辑作为数组操作 np.where(expr,xarr,yarr)
当 expr 成立时 取xarr 不成立时 取 yarr 也可以进行嵌套
np.where() 的数组既可以是同等大小的数组,也可以是标量
# 数学统计方法
arr.sum() 沿着轴向计算所有元素的累和,0长度的数组,累计为0
arr.mean() 数学平均,0长度的数组平均值为NaN
arr.std() var() 标准差,方差,可以选择自由度的调整(默认分母为n)
arr.min() max() 最小值,最大值
arr.argmin() argmax() 最小值和最大值的位置
cumsum 从0开始元素累计和
cumprod 从0开始元素的累计积
布尔数组的方法(any 和 all)
排序 arr.sort() arr.sort(1)
# 唯一值与其他集合逻辑 np.unique(arr)
数组的集合操作:
unique(x) 计算x的唯一值,并排序
intersect1d(x,y) 计算x与y的交集,并排序
union1d(x,y) 计算x与y的并集,并排序
in1d(x,y) 计算x中的元素是否包含在y中,返回一个布尔值数组
setdiff1d(x,y) 计算x与y的差集
setxor1d(x,y) 异或集 ,在x或y中,但不属于x,y 的交集元素
# 线性代数
from numpy.linalg import
diag
dot 矩阵点乘
trace 计算对角元素和
det 计算矩阵的行和列
eig 计算方阵的特征值和特征向量
inv 计算方阵的逆矩阵
pinv 计算矩阵的Moore-Penrose伪逆
qr 计算QR分解
svd 计算奇异值分解(SVD)
solve
lstsq 计算 Ax = b 的最小二乘解
# 伪随机数生成
numpy.random中的常用函数
seed 向随机数生成器传递随机状态种子
permutation 返回一个序列的随机排列,或者返回一个乱序的整数范围序列
shuffle 随机排列一个序列
rand 从均匀分布中抽取样本
randint 根据给定的由低到高的范围抽取随机整数
randn 从均值为0方差为1的正态分布中抽取样本
binomial 从二项分布中抽取样本
normal 从正态分布中抽取样本
beta 从beta分布中抽取样本
chisquare 从卡方分布中抽取样本
gamma 从伽马分布中抽取样本
uniform 从均匀【0,1)分布中抽取样本
# 总结:
1基本属性
a.dtype`数组元素类型 `float32,uint8,...
a.shape`数组形状 `(m,n,o,...)
a.size
数组元素数
a.itemsize
每个元素占字节数
a.nbytes
所有元素占的字节
a.ndim
数组维度
2形状相关
a.flat
所有元素的迭代器
a.flatten()
返回一个1维数组的复制
a.ravel()
返回一个1维数组,高效
a.resize(new_size)
改变形状
a.swapaxes(axis1, axis2)
交换两个维度的位置
a.transpose(*axex)
交换所有维度的位置
a.T`转置,`a.transpose()
a.squeeze()
去除所有长度为1的维度
3填充复制
a.copy()
返回数组的一个复制
a.fill(value)
将数组的元组设置为特定值
4转化
a.tolist()
将数组转化为列表
a.tostring()
转换为字符串
a.astype(dtype)
转化为指定类型
a.byteswap(False)
转换大小字节序
a.view(type_or_dtype)
生成一个使用相同内存,但使用不同的表示方法的数组
5复数
a.imag
虚部
a.real
实部
a.conjugate()
复共轭
a.conj()
复共轭(缩写)
6保存
a.dump(file)
将二进制数据存在file中
a.dump()
将二进制数据表示成字符串
a.tofile(fid, sep="",format="%s")
格式化ASCⅡ码写入文件
7查找排序
a.nonzero()
返回所有非零元素的索引
a.sort(axis=-1)
沿某个轴排序
a.argsort(axis=-1)
沿某个轴,返回按排序的索引
a.searchsorted(b)
返回将b中元素插入a后能保持有序的索引值
8元素数学操作
a.clip(low, high)
将数值限制在一定范围内
a.round(decimals=0)
近似到指定精度
a.cumsum(axis=None)
累加和
a.cumprod(axis=None)
累乘积
9约简操作
a.sum(axis=None)
求和
a.prod(axis=None)
求积
a.min(axis=None)
最小值
a.max(axis=None)
最大值
a.argmin(axis=None)
最小值索引
a.argmax(axis=None)
最大值索引
a.ptp(axis=None)
最大值减最小值作用
The name of the function comes from the acronym for ‘peak to peak’
a.mean(axis=None)
平均值
a.std(axis=None)
标准差
a.var(axis=None)
方差
a.any(axis=None)
只要有一个不为0,返回真,逻辑或
a.all(axis=None)
所有都不为0,返回真,逻辑与
作用1 基本属性 a.dtype
数组元素类型 float32,uint8,...
a.shape
数组形状 (m,n,o,...)
a.size
数组元素数 a.itemsize
每个元素占字节数 a.nbytes
所有元素占的字节 a.ndim
数组维度2 形状相关 a.flat
所有元素的迭代器 a.flatten()
返回一个1维数组的复制 a.ravel()
返回一个1维数组,高效 a.resize(new_size)
改变形状 a.swapaxes(axis1, axis2)
交换两个维度的位置 a.transpose(*axex)
交换所有维度的位置 a.T
转置, a.transpose()
a.squeeze()
去除所有长度为1的维度3 填充复制 a.copy()
返回数组的一个复制 a.fill(value)
将数组的元组设置为特定值4 转化 a.tolist()
将数组转化为列表 a.tostring()
转换为字符串 a.astype(dtype)
转化为指定类型 a.byteswap(False)
转换大小字节序 a.view(type_or_dtype)
生成一个使用相同内存,但使用不同的表示方法的数组5 复数 a.imag
虚部 a.real
实部 a.conjugate()
复共轭 a.conj()
复共轭(缩写)6 保存 a.dump(file)
将二进制数据存在file中 a.dump()
将二进制数据表示成字符串 a.tofile(fid, sep="",format="%s")
格式化ASCⅡ码写入文件7 查找排序 a.nonzero()
返回所有非零元素的索引 a.sort(axis=-1)
沿某个轴排序 a.argsort(axis=-1)
沿某个轴,返回按排序的索引 a.searchsorted(b)
返回将b中元素插入a后能保持有序的索引值8 元素数学操作 a.clip(low, high)
将数值限制在一定范围内 a.round(decimals=0)
近似到指定精度 a.cumsum(axis=None)
累加和 a.cumprod(axis=None)
累乘积9 约简操作 a.sum(axis=None)
求和 a.prod(axis=None)
求积 a.min(axis=None)
最小值 a.max(axis=None)
最大值 a.argmin(axis=None)
最小值索引 a.argmax(axis=None)
最大值索引 a.ptp(axis=None)
最大值减最小值 a.mean(axis=None)
平均值 a.std(axis=None)
标准差 a.var(axis=None)
方差 a.any(axis=None)
只要有一个不为0,返回真,逻辑或 a.all(axis=None)
所有都不为0,返回真,逻辑与