首页 > 编程语言 >AIGC基础工具-科学计算和数据处理的重要库NumPy(Numerical Python)简介

AIGC基础工具-科学计算和数据处理的重要库NumPy(Numerical Python)简介

时间:2024-09-28 11:48:10浏览次数:10  
标签:arr Python 矩阵 Numerical AIGC 数组 np array NumPy

在这里插入图片描述

文章目录


NumPy 是 Python 科学计算和数据处理的重要库之一,全称为 Numerical Python。它为多维数组(ndarray)和矩阵提供了支持,并且拥有大量高效的数学函数和操作。NumPy 是机器学习、深度学习和数据科学中的基础工具之一,也是其他库如 Pandas、SciPy、Matplotlib、TensorFlow 等的核心构件。

1. NumPy 的核心概念

1.1 ndarray:多维数组对象

NumPy 中最重要的对象是 ndarray,它是用于存储同类型数据的多维数组。与 Python 原生列表相比,ndarray 更加高效,特别是在处理大型数据集时。ndarray 具有以下重要属性:

  • ndim:数组的维度数(轴数)。
  • shape:数组的形状,返回一个元组,表示每个维度中元素的个数。
  • size:数组的元素总数。
  • dtype:数组中元素的数据类型。
  • itemsize:每个数组元素所占用的字节数。
示例代码
import numpy as np
# 创建一个 2x3 的 ndarray
arr = np.array([[1, 2, 3], [4, 5, 6]])

print("数组维度:", arr.ndim)
print("数组形状:", arr.shape)
print("数组元素总数:", arr.size)
print("数组数据类型:", arr.dtype)
print("每个元素占用的字节数:", arr.itemsize)

2. NumPy 的数据类型 (dtype)

NumPy 支持多种数据类型,比 Python 的内置数据类型更加丰富和细粒度。例如:

  • int8, int16, int32, int64:分别表示 8、16、32、64 位整数。
  • float16, float32, float64:表示 16、32、64 位浮点数。
  • complex64, complex128:分别表示 64 位、128 位的复数。

你可以在创建数组时指定数据类型,也可以通过 astype() 方法将数组转换为其他类型。

示例代码
arr_float = np.array([1.5, 2.5, 3.5], dtype=np.float32)
arr_int = arr_float.astype(np.int32)
print(arr_int)

3. NumPy 的数组创建方法

NumPy 提供了多种创建数组的方式,除了直接通过列表或元组,还可以通过函数生成特定形状、数值范围的数组。

3.1 使用 array() 创建数组

从 Python 列表、元组等数据结构直接转换为数组。

arr = np.array([1, 2, 3, 4])
3.2 使用 zeros()ones()

创建全 0 或全 1 的数组,常用于初始化数组。

zeros_array = np.zeros((3, 3))  # 3x3 的全 0 数组
ones_array = np.ones((2, 4))    # 2x4 的全 1 数组
3.3 使用 arange()linspace()
  • arange(start, stop, step):返回一个在指定范围内按步长生成的等差数组。
  • linspace(start, stop, num):返回一个在指定范围内生成的等间距的浮点数数组。
arr_range = np.arange(0, 10, 2)  # [0, 2, 4, 6, 8]
arr_linspace = np.linspace(0, 1, 5)  # [0. , 0.25, 0.5, 0.75, 1. ]
3.4 使用 random 模块生成随机数组

NumPy 的 random 模块可以生成随机数数组,如服从正态分布的随机数或 0 到 1 之间的随机浮点数。

random_array = np.random.rand(3, 3)  # 3x3 的随机浮点数矩阵
normal_array = np.random.randn(3, 3)  # 3x3 的正态分布随机数矩阵

4. NumPy 数组操作

4.1 数组切片和索引

NumPy 支持类似 Python 列表的切片和索引操作,但可以对多维数组进行切片。

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr[0, 2])  # 访问第一行第三个元素
print(arr[:, 1])  # 访问所有行的第二列
print(arr[1:3, :])  # 切片:获取第 2 行到第 3 行的所有列
4.2 数组的形状变化

使用 reshape() 可以改变数组的形状,但前提是总元素个数不变。ravel()flatten() 可以将数组展开为一维。

arr = np.array([[1, 2, 3], [4, 5, 6]])
reshaped = arr.reshape(3, 2)  # 变成 3 行 2 列
flattened = arr.ravel()  # 展平为一维数组
4.3 数学运算

NumPy 支持数组之间的元素级运算,如加法、减法、乘法和除法,运算速度非常快。

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])

sum_arr = arr1 + arr2  # [5, 7, 9]
mul_arr = arr1 * arr2  # [4, 10, 18]
4.4 数学函数

NumPy 提供了大量数学函数,如:

  • np.sin()np.cos()np.tan():三角函数。
  • np.exp()np.log():指数和对数函数。
  • np.sqrt():开平方。
示例代码
arr = np.array([1, 4, 9])
sqrt_arr = np.sqrt(arr)  # [1. 2. 3.]

5. NumPy 的线性代数功能

NumPy 提供了丰富的线性代数功能,如矩阵乘法、求逆、特征值分解等。

5.1 矩阵乘法

NumPy 的 dot()@ 运算符可以执行矩阵乘法。

arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])

result = np.dot(arr1, arr2)  # 或 arr1 @ arr2
5.2 矩阵求逆

使用 np.linalg.inv() 计算矩阵的逆。

matrix = np.array([[1, 2], [3, 4]])
inverse_matrix = np.linalg.inv(matrix)
5.3 特征值和特征向量

np.linalg.eig() 可以计算矩阵的特征值和特征向量。

matrix = np.array([[1, 2], [2, 1]])
eigenvalues, eigenvectors = np.linalg.eig(matrix)

6. NumPy 的广播机制

广播机制允许对不同形状的数组进行数学运算,NumPy 自动将小数组扩展为大数组的形状以适应运算。这使得编写代码更加简洁高效。

示例代码
arr1 = np.array([[1, 2, 3], [4, 5, 6]])
arr2 = np.array([1, 0, 1])

# 广播:arr2 自动扩展为 arr1 的形状
result = arr1 + arr2  # [[2, 2, 4], [5, 5, 7]]

7. NumPy 的高级操作

7.1 数组排序

NumPy 提供了 np.sort() 函数,可以对数组进行排序。

arr = np.array([3, 1, 2])
sorted_arr = np.sort(arr)  # [1, 2, 3]
7.2 集合操作

NumPy 还提供集合操作,如 np.unique() 用于去除重复元素。

arr = np.array([1, 2, 2, 3, 3])
unique_arr = np.unique(arr)  # [1, 2, 3]

8. NumPy 的性能优化

  • 内存效率ndarray 是连续内存块,减少了 Python 列表带来的额外开销。
  • **矢量化

操作**:NumPy 中的数组操作通常是矢量化的,基于底层 C 实现,避免了 Python 循环,极大提升性能。

9. NumPy 的应用领域

  • 数据分析与科学计算:如 Pandas 的底层数组计算依赖 NumPy。
  • 机器学习:作为深度学习框架(如 TensorFlow、PyTorch)的底层支持。
  • 图像处理:通过操作像素矩阵进行图像增强、滤波等。
  • 物理与工程仿真:用来模拟复杂的物理模型和工程系统。

通过 NumPy,你可以高效地进行各种科学计算与数据处理,它不仅简化了工作流程,还大大提升了计算的速度和效率,是 AI 和数据科学领域的基础工具。


结束语
Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。我将学习和深入研究Flutter的方方面面。从基础知识到高级技巧,从UI设计到性能优化,欢饮关注一起讨论学习,共同进入Flutter的精彩世界!

标签:arr,Python,矩阵,Numerical,AIGC,数组,np,array,NumPy
From: https://blog.csdn.net/yikezhuixun/article/details/142438512

相关文章

  • 信号量的秘密:Python中的Semaphore详解
    引言随着计算机硬件的发展,多核处理器已经成为了标准配置。这使得开发人员可以利用并发编程技术来提高应用程序的性能。然而,在并发环境下,资源共享和访问控制成了一个棘手的问题。Semaphore(信号量)就是一种常用的解决此类问题的技术。通过限制对共享资源的同时访问数量,Semapho......
  • Python中的“锁”艺术:解锁Lock与RLock的秘密
    引言随着计算机性能的不断提升以及多核处理器的普及,多线程编程已成为现代软件开发不可或缺的一部分。然而,当多个线程试图同时修改同一份数据时,就可能会引发所谓的“竞态条件”(racecondition),即不同线程之间相互干扰导致程序行为不可预测。为了避免这种情况的发生,就需要引入......
  • 【2024版】最简单的Python安装 | Pycharm专业版激活码教程(新手小白都能学会)
    Python环境的安装1.下载安装程序:•打开浏览器,在Python官方网站上可以下载打包好的安装包在这里......
  • 《AIGC 时代程序员的应对之策》
    在AIGC大语言模型不断涌现、AI辅助编程工具日益普及的当下,程序员的工作方式确实面临着深刻变革。对于程序员来说,如何应对这一趋势成为了至关重要的问题。一方面,有人担忧AI可能取代部分编程工作。不可否认,随着技术的发展,一些重复性、规律性强的编程任务可能会被AI高效......
  • python+flask计算机毕业设计猫咪交流平台的设计与实现(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着现代生活节奏的加快,宠物已成为众多家庭不可或缺的一员,其中猫咪以其独立而又不失温柔的性格深受喜爱。然而,宠物主人之间往往缺乏有效的......
  • python+flask计算机毕业设计网络授课考勤系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,在线教育已成为教育领域的重要组成部分,尤其是在全球疫情背景下,网络授课更是成为了保障教育连续性的关键手段。然......
  • python处理英语发音音频的项目
    项目需求是这样的:想要获取单词的发音音频,词性,解释,音标,拆分单音标,根据发音拆分音节。实现思路:1、如果是批量处理的话,提前准备好需要处理的单词词库(全是要处理的单词)。2、通过API(你们懂得)可以获取到单词的  词性,解释,发音音频,保存到数据库中,测试单词:conversation3、处......
  • python+flask计算机毕业设计专业课在线自评自测系统的设计与实现(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展和教育信息化的不断推进,传统教学模式正逐步向线上线下融合的新模式转变。在这一背景下,专业课程的学习与评估方式......
  • python+flask计算机毕业设计理财管理系统设计与实现(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着经济的快速发展和居民收入水平的提升,个人理财已成为现代生活中不可或缺的一部分。传统的手工记账方式已难以满足人们日益增长的理财需......
  • python+flask计算机毕业设计校园电子商品销售系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展和互联网的普及,电子商务已成为现代商业活动不可或缺的一部分,深刻改变着人们的消费习惯。在校园环境中,学生群体作为......