当前位置: 首页 > news >正文

NumPy常用函数

ndarray 数组创建

常用创建方法

# 1. 一维数组a1=np.array([1,2,3,4])# 2. 二维数组(嵌套列表)a2=np.array([[1,2],[3,4]])# 3. 指定数据类型a3=np.array([1.1,2.2],dtype=np.float32)# 4. 元组也可以a4=np.array((5,6,7))

快速生成固定值数组

np.full(shape, fill_value):全部填充同一个数字

#生成一维数组,10个为0a5=np.full(10,0)#生成二维数组,4个为5a6=np.full((2,2),5)

序列数组

np.arange(start, stop, step, dtype)

# 1. 只给终点:默认从0开始,步长1print(np.arange(10))# [0 1 2 3 4 5 6 7 8 9]# 2. 起点+终点print(np.arange(2,8))# [2 3 4 5 6 7]# 3. 起点+终点+步长print(np.arange(0,10,2))# [0 2 4 6 8]# 4. 支持小数print(np.arange(0,1,0.2))# [0. 0.2 0.4 0.6 0.8]

随机数模块(np.random)

np.random.rand(3)# 随机数范围[0,1)均匀分布 一维np.random.rand(2,3)# 2行3列随机浮点数

设置随机数

print(np.random.randint(0,5,size=(2,2)))#生成二维数组,0到5的随机数(不包含5)

等比/等差数列

logspace

np.logspace(start_exp, stop_exp, num, base=10)
含义:生成 base 的 start_exp ~ stop_exp 次方,共 num 个等比数

c1=np.logspace(0,2,5)print(c1)# [ 1. 3.16227766 10. 31.6227766 100. ]# 对应:10^0, 10^0.5, 10^1, 10^1.5, 10^2

linspace

np.linspace(start, stop, num)
适合:需要固定多少个点,不用自己算步长

c2=np.linspace(0,2,5)print(c2)# [0. 0.5 1. 1.5 2. ]

NumPy ndarray 常用数组属性

举例数组

importnumpyasnp arr=np.array([[1,2,3],[4,5,6]])

维度 / 形状相关

.ndim

数组维度数量,返回整数

print(arr.ndim)# 2,二维数组

.shape

每个维度的长度,返回元组

print(arr.shape)# (2,3) 2行3列# 单独取行数/列数print(arr.shape[0])# 行数 2print(arr.shape[1])# 列数 3

.size

数组总元素个数 = 各维度相乘

print(arr.size)# 2*3=6

.itemsize

单个元素占用字节数

# int64 每个数字占8字节print(arr.itemsize)# 8

.nbytes

整个数组占用总字节 = size × itemsize

print(arr.nbytes)# 6*8=48

数据类型相关

.dtype

数组元素的数据类型

print(arr.dtype)# int64

.dtype.name

类型名字符串

print(arr.dtype.name)# int64

补充:
虽然.dtype和.dtype.name直接打印出的都是int64,但是他们的类型本质不一样

print(type(arr.dtype))# <class 'numpy.dtypes.Int64DType'>print(type(arr.dtype.name))# <class 'str'>

数组变形

.reshape

arr.reshape(2,3)# 转为2行3列,不修改原数组

.resize

arr.resize(2,3)# 原地修改形状

.flatten

arr.flatten()# 展平一维(拷贝)

.ravel

arr.ravel()# 展平(优先视图,节省内存)

数组类型转换

.astype

print(arrA.astype(np.float32))

基本函数

常量

np.pi# 圆周率np.e# 自然常数np.nan# 空值np.inf# 无穷大

舍入取整函数

例子数组

x=np.array([1.2,1.5,-1.5,2.7])

.ceil

向上取整

np.ceil(x)# 向上取整 [2,2,-1,3]

.floor

向下取整

np.floor(x)# 向下取整 [1,1,-2,2]

.rint

四舍五入

np.rint(x)# 四舍五入 [1.,2.,-2.,3.]

.trunc

截断小数

np.trunc(x)# 截断小数 [1,1,-1,2]

.round

指定小数位数

np.round(x,1)# 指定小数位数

平方、开方、绝对值

a=np.array([1,4,9,-2])np.abs(a)# 绝对值 [1,4,9,2]np.square(a)# 平方 [1,16,81,4]np.sqrt(a[a>=0])# 平方根,负数会nannp.cbrt(np.array([-8,8]))# 立方根 [-2,2]

指数 & 对数函数

np.exp(x)# e^xnp.exp2(x)# 2^xnp.log([1,np.e,np.e**2])# 自然对数 lnnp.log10([1,10,100])# 以10为底np.log2([1,2,4])# 以2为底

二元函数(两个数组对应位置运算)

np.add(a,b)# 加 a+bnp.subtract(a,b)# 减 a-bnp.multiply(a,b)# 乘 a*bnp.divide(a,b)# 除 a/bnp.power(a,b)# 幂 a**bnp.maximum(a,b)# 对应位置取大np.minimum(a,b)# 对应位置取小np.mod(a,b)# 取余

条件筛选

三目选择(条件成立取 x,否则取 y)

np.where(arr>4,arr*2,arr+10)print(res)# 大于4的数×2,其余+10

聚合统计函数(整数组 / 按轴计算)

mat=np.array([[1,2,3],[4,5,6]])np.sum(mat)# 全部求和np.sum(mat,axis=0)# 按列求和np.sum(mat,axis=1)# 按行求和np.min(mat)# 最小值np.max(mat)# 最大值np.mean(mat)# 均值np.median(mat)# 中位数np.var(mat)# 方差np.std(mat)# 标准差np.argmax(mat)# 最大值索引np.argmin(mat)# 最小值索引# 一维a=np.array([1,2,3])#cumsum():累积和#cumprod():累积乘积print(a.cumsum())# [1 3 6]print(a.cumprod())# [1 2 6]

排序函数

两种用法
arr.sort():原地排序,直接修改原数组,无返回值
np.sort(arr):返回排序后的新数组,不改动原数组

importnumpyasnp a=np.array([3,1,4,2])# 不修改原数组s1=np.sort(a)print(a)# [3 1 4 2]print(s1)# [1 2 3 4]# 原地修改a.sort()print(a)# [1 2 3 4]

多维按轴排序 axis

mat=np.array([[3,1],[2,4]])# axis=1 每行内部排序print(np.sort(mat,axis=1))#[[1 3]#[2 4]]# axis=0 每列内部排序print(np.sort(mat,axis=0))#[[2 1]#[3 4]]

去重函数

np.unique函数参数:
return_counts=True:顺带统计每个元素出现次数
return_index=True:返回元素第一次出现的下标
return_inverse=True:返回原数组映射到唯一值的索引

nums=np.array([2,2,1,1,3,3,3])# 基础去重uniq=np.unique(nums)print(uniq)# [1 2 3]# 去重+统计频次vals,cnt=np.unique(nums,return_counts=True)print(vals,cnt)

NumPy 矩阵运算

极易混淆运算

* 和 np.multiply():对应元素相乘(哈达玛积),不是矩阵乘法
@ 和 np.dot() 和 np.matmul():标准数学矩阵乘法

元素相乘(对位相乘)

A=np.array([[1,2],[3,4]])B=np.array([[5,6],[7,8]])print(A*B)# [[ 5 12]# [21 32]]

矩阵乘法(线性代数标准乘法)

操作规则为:A列必须等于B行,输出结构为A行B列

arrA=np.array([[1,0,2],[-1,3,1]])print(arrA)#[[ 1 0 2]#[-1 3 1]]arrB=np.array([[4,1],[0,5],[-2,3]])print(arrB)#[[ 4 1]#[ 0 5]#[-2 3]]# 操作规则为:A列必须等于B行,输出结构为A行B列print(arrA.dot(arrB))#[[ 0 7]#[-6 17]]

计算过程:

http://www.cnnetsun.cn/news/3175928.html

相关文章:

  • ReActor:Stable Diffusion中最快的AI换脸插件,3步实现专业级人脸替换
  • InstructGPT 论文阅读笔记
  • Android存储清理终极指南:如何用SD Maid 2/SE让手机重获新生
  • RCNN vs YOLO 架构对比:从 3 个维度解析两阶段与单阶段检测器核心差异
  • 突破平台界限:Bottles如何让Linux用户无缝运行Windows软件生态
  • 【架构实战】金丝雀发布:灰度流量的精准控制与回滚
  • Jeepay开源支付系统深度解析:企业级分布式架构设计与生产部署最佳实践
  • WB实验管理:构建可追溯、可复用的机器学习实验体系
  • MLS点云道路标线自动化提取:基于PCL与OpenCV实现95%+准确率(附代码)
  • 线性回归落地七步闭环:从可控变量到业务可执行的因果模型
  • 深入深出openclaw:gateway代码实现阅读1
  • 西方形式主义认知范式泡沫化与贾子实践本位认知体系的替代性建构—— 基于多轮网络思辨对话文本的跨学科实证研究
  • 如何在浏览器中实现实时人体姿态搜索:pose-search完整指南
  • web应用技术作业10
  • 使用C++20 的协程创建通用的生成器
  • 从事编程工作这么多年,经常会有人问我什么样的程序是好程序
  • 2026年5月28日更新:GPT-5.5 Instant 更新与旧模型退场
  • HarmonyOS 小游戏《对战五子棋》开发第3篇-项目配置文件全解析
  • 101与金根回顾敏捷个人:(17)技术研究之道
  • Nginx进行配置文件拆分(以windows解压版为例)
  • 网上的若干算法都太复杂了,现提出包氏算法如下:
  • LangChain FewShotPromptTemplate少样本应用实战
  • 硬件版【Cursor】?aily blockly IDE尝鲜封神,实战硬伤尽显
  • 【Bug已解决】Claude Desktop 报错 Virtual Machine Platform not available 解决方案
  • 基于scRNA解析HNSCC肿瘤免疫微环境中Tfh、Th17细胞浸润的预后价值
  • 商用轨道插座怎么选更划算 各品牌性价比盘点帮你避坑少花冤枉钱
  • Windows Mobile下访问Sqlite的Native C++封装
  • Unity URP卡通渲染着色器:从原理到实践的完整指南
  • 3步掌握AMD Ryzen SDT调试工具:专业级CPU性能调优完整指南
  • NHibernate Issues之1904/1905:相同属性的Domain与Join查询/子查询