|
基本操作 |
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)分布中抽样 |