-
Notifications
You must be signed in to change notification settings - Fork 0
Numpy
Starslayerx edited this page Apr 20, 2021
·
39 revisions
Numpy的基本对象: ndarray多维数组类型(n-dimensional array object),多维数组,是一个灵活快捷的python容器
import numpy as np
函数 | 描述 |
---|---|
array | 将列表、元祖等类型转化为ndarray类型 |
asarray | 同array,但若传如数据为ndarray则不会复制内存 |
arange | (start, end, step)同python的range,不含end |
ones | 根据给定数据大小,生成全1数组 |
ones_like | 根据所给的数组大小,生成全1数组 |
zeros | 全0数组 |
zeros_like | |
empty | 未初始化数组 |
empty_like | |
full | 生成指定数值的数组 |
full_like | |
eye | (a, b) 生成a x b大小特征矩阵 |
identity | (a) 生成 a x a 大小特征矩阵 |
linspace | (a, b, n) 从a到b平均产生n个数,含n |
mgrid[a: b: nj] | 同上,使用复数j生成数组 |
ndarray对象和python列表不同点在于,ndarray中的对象必须都是同总类型的,而list不一定
属性 | 说明 |
---|---|
ndim | 维度 |
shape | (m, n) 行列 |
size | 元素总数 |
dtype | 数据类型 |
itemsize | 每个元素字节数 |
索引方式 | 说明 | 例子 |
---|---|---|
普通索引 | 使用下表及切片访问元素 | a[1,2], a[[2,3], 1:3] |
布尔索引 | 使用和数组size相同的布尔数组 | a[~isnan(a)] |
神奇索引 | 将下表替换为列表访问: a[ [行], [列] ] | a[ [1:3], [4, 5] ] |
函数 | 说明 |
---|---|
delete | (a, n, axis=0/1) 删除数组a的第n行/列 |
append | (a, [...], axis=0/1) 增加行或列 行列的写法: [行,这,样,写] [列],[这],[样],[写] |
reshape | 返回相应形状视图 |
reisze | 改变数组形状 |
c_ | c_[a,b] 构造分块数组[a,b] |
r_ | r_[a,b] 构造分块数组 |
ravel | 返回水平展开数组视图 |
flatten |
|
hstack | ((a,b))横向结合数组a b |
vstack | ((a,b))纵向结合数组a b |
concatenate |
|
dstack | ((a,b))深度组合a b |
hsplit | 横向分割 |
vsplit | 纵向分割 |
split |
|
dsplit | (a,n)深度分割数组 |
tolist | 将数组转化为python列表 |
a.T | 将数组a转置 |
transpose() | 转轴 |
swapaxes() | 换轴 |
- 一元通用函数
一元通用函数 | 说明 |
---|---|
abs fabs | 整数 浮点数的绝对值 |
sqrt | |
square |
|
exp | |
log log10 log2 log1p | |
sign | 计算符号值1(正数) 0(0) -1(复数) |
ceil | 最高整数值 |
floor | 最小整数值 |
rint | 保留整数 |
modf(a/b) | [0:小数部分, 1:整数部分] |
isnan | 是否为nan |
isfinite isinf | 是否有限 是否无限 |
cos cosh sin sinh tan tanh | 三角函数 |
arccos arcsin arctan arccosh arcsinh arctanh | 反三角函数 |
logical_not | ~ 按位取反 |
- 二元通用函数
函数 | 说明 |
---|---|
add | + |
substract | - |
divede floor_divide | / //(整除) |
power | |
maximum fmax | 取最大值 fmax忽略Nan |
minimum fmin | 取最小值 fmin忽略Nan |
mod | 取余数 |
copysign | 将第二个数组符号给第一个数组 |
greater greater_equal less less_equal equal not_equal logical_and logical_or logical_xor | > >= < <= == != & | ^ 用符号也可以 |
逻辑操作 | |
where(bool表达式, a, b) | 根据布尔(数组)选择ab中的元素 |
meshgrid() | 两个坐标轴上的点在平面上画网格 |
使用meshgrid()绘制网格
import matplotlib.pyplot as plt
import numpy as np
points = np.arange(-5, 5, 0.01)
xs, ys = np.meshgrid(points, points)
z = np.sqrt(xs ** 2, ys ** 2)
plt.imshow(z, cmap=plt.cm.gray)
plt.colorbar()
plt.title('Image plot of $\sqrt{x^2+y^2}$')
- 数学统计方法
方法 | 描述 |
---|---|
sum | 元素和 (可选 axis=0/1) |
std var | 标准差 方差(axis可选) |
max min | 最大最小值(axis) |
argmax argmin | 最大最小值的位置(axis) |
cumsum | 从0开始累和(axis) |
cumpord | 从1开始累乘(axis) |
- 布尔数组方法 布尔值会被强制为1和0,因此sum()可以计算布尔数组中True的个数
方法 | 描述 |
---|---|
any | 是否存在True |
all | 是否都是True |
sort | 排序(axis) |
集合操作 | |
unique(x) | 计算x的唯一值,并排序 |
intersect1d(x, y) | x y的交集,并排序 |
union1d(x, y) | x y的并集,并排序 |
1n1d(x, y) | 判断x是否在y中,布尔数组 |
setdiff1d(x, y) | x-y差集 |
setxor1d(x, y) | 异或集 |
- 矩阵乘法(内积)
# 以下两种等价
x @ y
np.dot(x, y)
- numpy.linalg 模块集成了许多线性代数的函数
函数 | 描述 |
---|---|
diag | 方阵的对角元素$\leftrightarrow$一维数组 |
dot | 矩阵点乘 |
trace | 对角元素和 |
det | 矩阵行列式 |
eig | 特征值 和 特征向量 |
inv | 逆矩阵 |
pinv | Moore-Penrose伪逆矩阵 |
qr | QR分解 |
svd | 奇异分解 |
solve | 求解$Ax=b$,其中A为方阵 |
lstsq | 计算$Ax=b$最小二乘解 |
函数 | 描述 |
---|---|
seed | 种子 |
permutation | 返回一个序列的随机序列 |
shuffle | 随即排列一个序列 |
randint | 从给定范围抽取样本 |
分布函数 | |
rand | 均匀分布随机样本 |
uniform | 均匀[low,high)分布 |
randn | 均值0方差1的正态分布 |
normal | 正态(高斯)分布 |
multivariate_normal | 多元正态分布 |
binomial | 二项分布 |
geometric | 几何分布 |
hypergeometric | 超几何分布 |
poisson | 泊松分布 |
beta |
|
chisquare | 卡方分布 |
gamma | 伽玛分布 |
lognormal | 对数正态分布 |
multinomial | 多项式分布 |
- 文本文件读取
- savetxt() 和 loadtxt()
savetxt('file_name', array_name, fmt='%d', delimiter=',')
将数组存入文件
fmt = '%d'保存为整数格式 '%f'浮点数
delimiter = ',' 以逗号作为分隔符loadtxt('file_name') 读取文件,返回浮点型数组
- genfromtxt 读取文本文件数据
genfromtxt(fname, dtype=<class 'float'>, comments='#', delimiter=None,
skip_header=0, skip_footer=0, converters=None, missing_values=None,
filling_values=None, usecols=None, names=None, excludelist=None,
deletechars=None, replace_space='-', autostrip=False, case_sensitive=True,
defaultfmt='f%i', unpack=None, usemask=False, loose=True, invalid_rise=True,
max_rows=None, encoding='bytes')
genfromtxt函数参数 | 解释 |
---|---|
fname | 文件名 |
dtype | 读入数据类型,默认浮点型;若含有字符则要指定为str |
comments | 指定注释符合 |
delimiter | 数据分列隔符 |
skip_header | 跳过行数(默认不跳过) |
skip_footer | 跳过尾数(默认不跳过) |
converters | 将指定列数据转化为其他值 |
missing_values | 指定缺失值的标记 |
filling_values | 指定缺失值的填充值 |
usecols | 指定要读入的列 |
names | 为读入列设置名称 |
max_rows | 最大读入行 |
encoding | 指定编码,若为中文要自行指定 |
- 二进制文件读取
-
tofile() 和 fromfile() tofile函数将数组以二进制形式写入文件,fromefile从二进制文件中读取数组
-
load() save() save() 这三个函数将数组存储为Numpy专用的格式
savez可以存入多个数组
savez(file_name, a, b, c, ...)
-
生成矩阵对象
M = np.mat() # 使用方法类似np.array() np.mat("1,2,3;4,5,6") # 也可以这样
-
矩阵与array的区别 对于矩阵对象,直接使用 * 就可以进行矩阵乘法,而array要使用np.dot()
-
特殊矩阵
M.T # 转置矩阵 M.H # 共厄矩阵 M.I # 逆矩阵