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

Python 进阶知识之numpy库(一)

一、NumPy 库介绍

NumPy(Numerical Python 的缩写)是 Python 编程语言中一个开源的数值计算扩展库,它为 Python 提供了高性能的多维数组对象以及一系列用于处理这些数组的数学函数,是科学计算、数据分析等领域的基础工具之一。

1、历史背景
  • 起源与发展:NumPy 的前身是 1995 年由 Jim Hugunin 开发的 Numeric 库,当时它的出现主要是为了解决 Python 在数值计算方面的效率问题。2005 年,Travis Oliphant 在 Numeric 和另一个同类库 Numarray 的基础上,整合两者的优势,开发出了 NumPy,使其在功能和性能上得到了极大提升,并逐渐成为 Python 数值计算的标准库。
  • 持续迭代:自诞生以来,NumPy 不断更新迭代,吸引了众多开发者参与贡献,如今已成为 Python 生态中不可或缺的重要组成部分,其稳定的版本更新也保证了在各类场景下的可靠性。
2、核心功能与用途
  1. 提供高效的多维数组对象(ndarray)

    • 这是 NumPy 最核心的数据结构,它可以存储同类型的元素,相比 Python 内置的列表,ndarray 在内存占用、访问速度和运算效率上都有显著优势,尤其适合处理大规模数据。
    • 支持对数组进行维度变换、切片、索引等操作,方便数据的提取和重组。
  2. 丰富的数学运算函数

    • 包含大量用于数组运算的数学函数,如三角函数、指数函数、对数函数、线性代数运算(矩阵乘法、求逆、特征值等)、傅里叶变换等,这些函数都是基于 C 语言实现的,运算速度极快。
    • 支持向量化运算,即可以直接对整个数组进行操作,无需编写循环,简化了代码的同时也提高了执行效率。
  3. 作为其他库的基础

    • 许多 Python 科学计算领域的知名库,如 Pandas(数据分析)、Matplotlib(数据可视化)、Scikit-learn(机器学习)、TensorFlow(深度学习)等,都依赖于 NumPy 的数组对象和底层计算能力,NumPy 为它们提供了数据交互和运算的基础。
  4. 数据处理与分析

    • 在数据预处理阶段,可用于数据的清洗、转换、标准化等操作;在统计分析中,能快速计算数组的均值、方差、标准差等统计量。
  5. 科学与工程计算

    • 广泛应用于物理、化学、工程等领域的数值模拟、数值求解等问题,例如求解微分方程、进行信号处理等。
3、重要意义

NumPy 的出现极大地弥补了 Python 在数值计算方面的短板,使得 Python 从一门主要用于脚本编程和快速开发的语言,逐渐成为科学计算、数据分析和人工智能等领域的主流语言之一。它不仅提高了数值计算的效率,还通过简洁易用的接口降低了科学计算的门槛,促进了相关领域的发展和应用。

二、创建array

array(数组)——>模拟了矩阵

一般用np代替numpy来便捷使用

使用方法为

np.array()#括号里面加上列表或者需要组合的数组
import numpy as np#导入numpy  as np#一维数组
list1 = [1,2,3,4,5] #python自带的列表数据类型
print(list1)
v = np.array(list1)
print(v)#二维数组[多个一维数组构成]
m = np.array([list1,list1,list1])
print(m)#三维数组[多个二维数组构成]
z = np.array([[list1,list1,list1],[list1,list1,list1],[list1,list1,list1]])
print(z)z = np.array([m,m,m])
#更高维的y = np.array([z,z,z])

 运行结果

[1, 2, 3, 4, 5]
[1 2 3 4 5]
[[1 2 3 4 5][1 2 3 4 5][1 2 3 4 5]]
[[[1 2 3 4 5][1 2 3 4 5][1 2 3 4 5]][[1 2 3 4 5][1 2 3 4 5][1 2 3 4 5]][[1 2 3 4 5][1 2 3 4 5][1 2 3 4 5]]]


数组的基本属性

在numpy库中,数据有多个维度

代码接上面的内容

a = v.shape #查询数组的形状
b = v.ndim  #查询数组的维度
c = v.size  #查询数组中数据个数
print(type(v))
d = v.dtype #查询数组中的元素类型,int8, int16, int32, int64: 表示不同长度的有符号整数。
# uint8, uint16, uint32, uint64: 表示不同长度的无符号整数。
# float16, float32, float64 (float 是 float64 的简写): 表示不同精度的浮点数。
# complex64, complex128 (complex 是 complex128 的简写): 表示复数,其中64和128表示复数的实部和虚部的位数。
# bool: 布尔类型,可以存储True或False。
# str_: 表示定长字符串,可以通过添加数字来指定字符串的长度,如 'S10' 表示长度为10的字符串。
# object: 表示Python对象类型,可以用来存储任意Python对象。
#二维数组
a = m.shape#是描绘m矩阵的形状
b = m.ndim#表示数据的维度  2
c = m.size
print(type(m))
d = m.dtype
#三维数组
z.shape
z.ndim
z.size
type(z)
z.dtype

调试结果:

三、数组的升维

数组的维度可以互相转化,

import numpy as nplist1 = [1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8]#
v = np.array(list1)
print(v)#一维变二维[-1表示自己计算]【返回一个改变后的矩阵】
# a.reshape(newshape, order='C')
# a:要重新形状的数组。
# newshape:一个整数或者元组,用于定义新的形状。
# order:可选参数,指定元素在数组中的读取顺序。'C'意味着按行,'F'意味着按列,'A'意味着原顺序,'K'意味着元素在内存中的出现顺序。
r1 = v.reshape(4,4)
120
r1 = v.reshape(-1,4)
print(r1)
r1.ndim#一维变三维
r2 = v.reshape(1,-1,2)
print(r2)#二维变三维
r3 = r1.reshape(2,2,4)
print(r3)#resize()【不返回计算结果】【直接修改原始数组】
#r4 = v.resize(2,4)
#print(r4)
r4 = v.resize(4,4)#直接会修改原始数据到相应的维度
print(v)

http://www.lryc.cn/news/593880.html

相关文章:

  • 考研最高效的准备工作是什么
  • 【JDK内置工具】常用工具和实战指令
  • 30天打牢数模基础-决策树讲解
  • Docker在NAS部署MoonTV+OrionTV
  • [Python] -项目实战8- 构建一个简单的 Todo List Web 应用(Flask)
  • 深度学习×第10卷:她用一块小滤镜,在图像中找到你
  • 嵌入式硬件篇---按键
  • 嵌入式硬件篇---继电器
  • USB 2.0 vs USB 3.0:全面技术对比与选择指南
  • 2025《艾诺提亚失落之歌》新手攻略
  • 基于单片机出租车计价器设计
  • DMA控制器(Direct Memory Access Controller)是什么?
  • 用户端功能清单设计指南:从核心模块到优先级排序
  • 面试150 添加与搜索单词--数据结构设计
  • 前端的测试
  • 详解Mysql索引合并
  • 二、Spark 开发环境搭建 IDEA + Maven 及 WordCount 案例实战
  • 每日一题7.20
  • Spring之事务使用指南
  • 【Vue进阶学习笔记】Vue 路由入门指南
  • 18.TaskExecutor获取ResourceManagerGateway
  • 【已解决】GitHub SSH 连接失败解决方案:Permission Denied (publickey) 错误修复指南
  • ant+Jmeter+jenkins接口自动化,如何实现把执行失败的接口信息单独发邮件?
  • XILINX JESD204B/C IP的AXI配置
  • 【HarmonyOS】ArkUI - 自定义组件和结构重用
  • 基于FPGA的多级流水线加法器verilog实现,包含testbench测试文件
  • Python基础-列表
  • Python趣味算法:借书方案知多少 | 排列组合穷举法详解
  • 06 51单片机之矩阵键盘
  • Laravel 框架NOAUTH Authentication required 错误解决方案-优雅草卓伊凡