NumPy的基础语法
January 12, 2025About 4 min
NumPy的基础语法
准备工作
JupyterNote安装Numpy
!pip intstall numpy
导包
import numpy as np
# 这是标准的导包,别名为np
手册
ndarray对象
- 属性
- ndmin:秩,即数据轴的个数
- shape:维度
- size:元素个数
- dtype:元素的类型
- itemsize:每个元素的字节大小
创建数组
array
函数原型
array(object, dtype=None, *, copy=True, order='K', subok=False, ndmin=0,like=None)
- object:数组或嵌套的数列,也就是你想转化的数组
- dtype:元素的类型,可选
- copy:对象是否需要复制,可能与深浅复制有关
- ndmin:指定最小维度
常见用法
a = list(range(10)) b = np.array(a) # 常见的就是直接把数组放进去
arange
用法跟自带的range类似
函数原型
arange([start,] stop[, step,], dtype=None, *, device=None, like=None)
linspace
函数原型
linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None,axis=0, *, device=None)
- start:开始数字
- stop:结束数字
- num:生成多少个数字
- endpoint:False表示不包含stop
- retstep:返回一个公差
logspace
与上面不同的是创建的是等比数列,参数略微不同
zeros
创建全0数组
函数原型
zeros(shape, dtype=float, order='C', *, like=None)
- shape:创建的数组的shape,就像是几行几列这种属性
ones
创造全1数组
diag
创造对角线为指定值
函数原型
diag(v, k=0)
- v:要创建的对角线的填充数据,一个数组
- k:可正可负,指定对角线的在哪个位置,正对角线还是反对角线
eye
创造对角线全为1的数组
函数原型
eye(N, M=None, k=0, dtype=float, order='C', *, device=None, like=None)
- N:行数
- M:列数,默认为N
生成随机数
np.random
randint
生成int类型的随机数
函数原型
randint(low, high=None, size=None, dtype=None)
返回区间 在[
low
,high
)之间的数,如果high
没给定,那么区间就是 [0,low
)- size:生成多少个
random
生成指定数量的随机数
rand
可以生成指定维度的数组
如rand(2, 3, 4)那就是第一维长度为2,第二维长度为3...
数组变换
ndarray对象.reshape(新维度):返回值为新的ndarray对象
可以给定维度
reshape(2,3)
,也可以自动推断,例如reshape(2, -1)
形成2行对应列的数组相反操作
- ravel
- flatten
两个都是把数组变成一维
filp
将数组进行反转
数组合并
无论哪种合并,要保证能合并,例如合并的方向要保证一样列数或行数
hstack
水平方向合并
函数原型
vstack(tup, *, dtype=None, casting="same_kind"):
- tup:一个元组,包含要合并的若干个数组
vstack
垂直方向合并
concatenate
上面两个函数的合体,通过axis控制合并方向
函数原型
concatenate(arrays, axis=None, out=None, *, dtype=None, casting=None)
- arrays:要合并的数组
- axis:合并的方向:1横向,0纵向
数组分割
操作和上面相反
- hsplit
- vsplit
- split:对应的就是concatenate的反向操作
数组转置和轴对换
transpose
转置矩阵
把每个轴对应得数据看作一个元组进行放置
如二位数组,transpose(1, 0),因为x轴为对应0,y轴对应1
所以按y轴和x轴位置放,那么就是把数组的每一行当作每一列来输出
swapaxes
没搞明白
数组的索引和切片
索引
可以使用
a[1][2][3]
这种的切片
可以
a[1: 2, 2 : 3]
这种的,每个维度有一个索引,使用,
隔开这种的是按轴来切的,例如有个二维的
a[:, :1]
表示所有行的第一列的元素
数据排序
sort
函数原型
sort(a, axis=-1, kind=None, order=None, *, stable=None)
- a:要排序的数组
argsort
lexsort
可以根据键去排序
如一个键数组为a = [-1, 2]
要排序的数组为b = [4, 2]
那么np.lexsort((b, a))就是[2, 4]
数据重复和去重
unique
把数组扔进去就行
tile和copy
都可以把一个数组进行复制后进行拼接,返回一个新的数组11
- tile(A, reps)
- A:要重复的数组
- reps:重复的次数
- repeat(a, reps, axis = None)
- a:要重复的数组
- reps::重复的次数
- axis:拼接方向,横向或纵向
常用统计函数
- sum:求和,也可以沿着轴求和
- mean:均值
- std:标准差
- min:最小值
- max:最大值
- var:方差