初识NumPy:Python中的数值计算库

简介: NumPy(Numeric Python)是Python的一种开源的数值计算扩展。这种工具可用于存储和处理大型矩阵,使得在Python中进行数学运算变得更为便捷高效。

NumPy(Numeric Python)是Python的一种开源的数值计算扩展。这种工具可用于存储和处理大型矩阵,使得在Python中进行数学运算变得更为便捷高效。

一、NumPy数组和Python列表的比较

Python的列表是一种通用的数据结构,但对于大规模数值运算,列表的效率并不高。NumPy提供的是一种称为ndarray的多维数组对象,它比Python的原生列表在存储和操作数据时,更加的高效和便捷。

import numpy as np

# 创建一个NumPy数组
arr = np.array([1, 2, 3, 4, 5])
print(arr)

以上代码将打印出一个NumPy数组[1 2 3 4 5]。我们可以看到,NumPy数组和Python列表在表现形式上并无太大区别,但是在进行大规模数据运算时,二者的差异就显现出来。

二、NumPy的矢量化运算

NumPy最重要的特性之一就是其矢量化运算的能力。所谓矢量化,就是指对数组的每个元素应用函数,而无需编写显式的循环。这使得程序在进行数值计算时,更加简洁且运行更快。

import numpy as np

# 创建一个NumPy数组
arr = np.array([1, 2, 3, 4, 5])

# 将数组中每个元素加1
arr = arr + 1
print(arr)  # 输出: [2 3 4 5 6]

在这个例子中,我们直接将一个标量值1加到了数组arr的每一个元素上,这在Python原生列表中是无法做到的。如果你尝试将一个数字和一个列表相加,Python会抛出一个类型错误。但是在NumPy中,这种矢量化的运算可以让我们更方便地进行数学运算。

三、NumPy的广播机制

NumPy的另一个强大特性是广播(Broadcasting)。广播是NumPy处理不同大小数组间二元运算的能力。

例如,我们有一个值和一个数组,我们想将这个值加到数组的每一个元素上。NumPy的广播机制可以让我们做到这一点,而无需显式地复制这个值。

import numpy as np

# 创建一个NumPy数组
arr = np.array([1, 2, 3, 4, 5])

# 创建一个标量值
value = 1

# 使用广播将标量值加到数组的每一个元素上
result = arr + value
print(result)  # 输出: [2 3 4 5 6]

这个例子和上个例子相似,我们也是将一个值加到数组的每个元素上。但是这里我们更明确地展示了NumPy的广播机制。这种机制也可以应用于更复杂的情况,比如两个数组之间的运算。

四、NumPy数组的索引和切片

NumPy数组的索引和切片和Python列表非常相似。我们可以通过索引访问数组的单个元素,或者通过切片访问数组的一个子集。

import numpy as np

# 创建一个NumPy数组
arr = np.array([1, 2, 3, 4, 5])

# 通过索引访问元素
print(arr[0])  # 输出: 1

# 通过切片访问子集
print(arr[1:3])  # 输出: [2 3]

这个例子显示了如何通过索引和切片来访问NumPy数组的元素。请注意,和Python列表一样,NumPy数组的索引也是从0开始的。

五、NumPy数组的形状和维度

NumPy数组有两个非常重要的属性:形状(shape)和维度(dimension)。形状描述的是数组在每个维度上的大小,维度则是数组的总维数。

import numpy as np

# 创建一个二维NumPy数组
arr = np.array([[1, 2, 3], [4, 5, 6]])

# 打印数组的形状和维度
print(arr.shape)  # 输出: (2, 3)
print(arr.ndim)  # 输出: 2

在这个例子中,我们创建了一个2x3的二维数组。它的形状是(2, 3),表示它有2行3列。它的维度是2,表示它是一个二维数组。

六、结论

NumPy是Python中进行数值计算的重要工具,它提供了高效的多维数组对象,以及大量的函数来操作这些数组。本文仅介绍了NumPy的一些基本特性,NumPy还有许多其他的特性和功能等待我们去发掘和利用。

相关文章
|
5月前
|
存储 Java 数据处理
(numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
Numpy是什么? numpy是Python中科学计算的基础包。 它是一个Python库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/0 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。 Numpy能做什么? numpy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++
498 0
|
5月前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
319 0
|
6月前
|
存储 人工智能 测试技术
如何使用LangChain的Python库结合DeepSeek进行多轮次对话?
本文介绍如何使用LangChain结合DeepSeek实现多轮对话,测开人员可借此自动生成测试用例,提升自动化测试效率。
1376 125
如何使用LangChain的Python库结合DeepSeek进行多轮次对话?
|
6月前
|
监控 数据可视化 数据挖掘
Python Rich库使用指南:打造更美观的命令行应用
Rich库是Python的终端美化利器,支持彩色文本、智能表格、动态进度条和语法高亮,大幅提升命令行应用的可视化效果与用户体验。
526 0
|
8月前
|
存储 Web App开发 前端开发
Python + Requests库爬取动态Ajax分页数据
Python + Requests库爬取动态Ajax分页数据
|
5月前
|
数据可视化 关系型数据库 MySQL
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
本文详解基于Python的电影TOP250数据可视化大屏开发全流程,涵盖爬虫、数据存储、分析及可视化。使用requests+BeautifulSoup爬取数据,pandas存入MySQL,pyecharts实现柱状图、饼图、词云图、散点图等多种图表,并通过Page组件拖拽布局组合成大屏,支持多种主题切换,附完整源码与视频讲解。
562 4
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
|
5月前
|
传感器 运维 前端开发
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
本文解析异常(anomaly)与新颖性(novelty)检测的本质差异,结合distfit库演示基于概率密度拟合的单变量无监督异常检测方法,涵盖全局、上下文与集体离群值识别,助力构建高可解释性模型。
475 10
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
|
7月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
479 18
|
8月前
|
JSON 网络安全 数据格式
Python网络请求库requests使用详述
总结来说,`requests`库非常适用于需要快速、简易、可靠进行HTTP请求的应用场景,它的简洁性让开发者避免繁琐的网络代码而专注于交互逻辑本身。通过上述方式,你可以利用 `requests`处理大部分常见的HTTP请求需求。
665 51
|
7月前
|
机器学习/深度学习 API 异构计算
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
JAX是Google开发的高性能数值计算库,旨在解决NumPy在现代计算需求下的局限性。它不仅兼容NumPy的API,还引入了自动微分、GPU/TPU加速和即时编译(JIT)等关键功能,显著提升了计算效率。JAX适用于机器学习、科学模拟等需要大规模计算和梯度优化的场景,为Python在高性能计算领域开辟了新路径。
717 0
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程

热门文章

最新文章

推荐镜像

更多