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