PYTHON_numpy
numpy 用于科学计算,记录如下。
一、数组
- C数组中数据类型一致;python列表可不一致,但numpy数组array中数据类型需一致
-
如传进来的包含不同类型,则自动统一为同一类型,优先级:str>float>int
- shift+tab:查看该函数的所有参数,tab:自动补全
1.1 列表 vs 数组:
a=[1,2,3,4,5] for i in range(5): a[i]=a[i]+1
--列表需通过循环遍历计算。
import numpy as np a=np.array([1,2,3,4,5]) a=a+1
--数组则利用 numpy 向量化功能。
1.2 创建数组:
import numpy as np np.array(['1','2','3'],dtype=int)
--array() 可将列表转为 array,第一个参数为列表对象,第二个参数 dtype 可指定类型
---------------------------------------------
二、函数
2.1 生成 1 矩阵:
np.ones(shape,dtype=None) '''生成m行n列的二维数组''' np.ones((m,n)) '''特别地,生成m行1列或1行n列的二维数组''' np.ones((m,1))#[[1],[1],[1]] np.ones((1,n))#[[1,1,1]] '''生成m个元素的一维数组''' np.ones(m)#[1,1,1] np.ones(m,) '''生成k个元素集合m行n列的三维数组''' np.ones(k,m,n)#[[[1,1]],[[1,1]]]
2.2 生成 0 矩阵:
np.zeros(shape,dtype=float)
2.3 生成填充矩阵:
np.full(shape,fill_value,dtype=None)
2.4 生成单位矩阵:
np.eye(N,M=None,k=0,dtype=float)
--对角线为 1,其他位置元素为 0;M 控制 1 的行数,k 控制对角线左右移动。
2.5 生成等差数列:
np.linspace(start,stop,num,endpoint,dtype=None)
--含终止数,除非 endpoint 设定为 False。
2.6 生成等步长序列:
np.arrange(start,stop,dtype=None)
2.7 生成随机整数:
np.random.randint(low,high,size,dtype)
--参数 size 类似 shape。
2.8 生成正态分布随机数:
'''标准正态分布''' np.random.randn(num) '''普通正态分布''' np.random.normal(μ,σ)
2.9 生成 0~1 随机数:
np.random.random(size)
2.10 生成 0~n 随机索引:
np.random.permutation(n)
---------------------------------------------
三、属性
'''初始化''' arr=np.random.randint(0,100,size=(5,4,3))
3.1 获取数组维度:
arr.ndim
3.2 获取数组形状:
arr.shape
3.3 获取数组总长度:
arr.size
3.4 获取数组中的元素类型:
arr.dtype
---------------------------------------------
四、索引 & 切片
4.1 列表 vs 数组:
'''列表取数方式''' l=[[1,2,3],[4,5,6]] l[0][0] '''数组取数方式''' arr=array(l) l[0,0]
--array 除了特有的取数方式外,还兼容列表的取数方式。
4.2 多次取数:
arr1=array([1,2,3]) arr1[0,1] arr1[0,1,2,0,1,2]
--在数组以特有的方式取数时,若超出数组维度范围,则为多次取数。
4.3 布尔列表取数:
arr=np.array([1,2,3]) bool_arr=[True,True,False] arr[bool_arr]
--按布尔列表取数,前提是布尔列表长度需与原数组相同。
4.4 条件取数:
arr=np.array([1,2,3])
arr[arr>2]
--取得数组中大于2的元素。
4.5 行 / 列切片:
import numpy as np arr2=np.random.randint(0,100,size=(5,6)) '''行切片''' arr2[0:2] '''列切片''' arr2[:,0:2]
--切片前的维度不可省略,切片后的可以。
4.6 行 / 列正反向:
'''行反向''' arr2[::-1] '''列反向''' arr2[:,::-1]
---------------------------------------------
五、统计计算
'''初始化''' arr=np.array([1,2,3])
1. 均值:
arr.mean()
2. 最值:
display(arr.max(),arr.min())
--多个输出结果时,display 可优化输出的结果格式。
3. 最值的索引:
display(arr.argmax(),arr.argmin())
4. 标准差、方差:
display(arr.std(),arr.var())
5. 中位数:
np.median(arr)
6. 百分位数:
np.percentile(arr,[0.25,0.5,0.75])
--常用于异常值检测。
---------------------------------------------
六、存在 / 全为
1. 存在:
bool_arr=np.array([True,False])
bool_arr.any()
--检测布尔数组是否至少存在一个True。
bool_arr=arr>2
bool_arr.any()
--检测数组中是否至少存在一个满足条件的值。
2. 全为:
bool_arr=np.array([True,False])
bool_arr.all()
--布尔数组是否全为True。
bool_arr=arr>2
bool_arr.all()
--数组中是否全为满足条件的值。
---------------------------------------------
七、广播机制
arr=np.array([1,2,3])
arr+3
--自动填充,但行列结构均不同的多维数组间无法使用。
---------------------------------------------
八、排序
-END
https://www.bilibili.com/video/BV13P4y1f7db?p=5&vd_source=efad7d657bca9605bbc1590a798ed819
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了