NumPy:从初识到实战,探索Python科学计算的无限可能

NumPy

在浩瀚的Python编程世界中,有一个强大的库如星辰般璀璨,它是数据科学家、机器学习工程师乃至量化金融分析师手中的利器——NumPy,它以其高效的数据处理能力和便捷的矩阵运算机制,在科研与工程领域中占据着举足轻重的地位。

一、NumPy初识:基石的力量

NumPy(Numerical Python)是Python中最核心的科学计算库之一,提供了一系列高级数学函数,以及对多维数组和矩阵的强大支持。它的基础数据结构numpy.ndarray为海量数据的存储和操作提供了极高的效率,并且无缝对接其他深度学习框架,如TensorFlow、PyTorch等,奠定了Python在数据分析与科学计算领域的基础地位。

二、NumPy功能:领略高效魅力

  1. 快速创建和操作数组:通过简单的API,我们可以轻松创建各种类型的数组,进行元素级操作、统计分析、排序、索引切片等任务,大大提升了开发效率。

  2. ndarray对象:NumPy的核心是一个名为numpy.ndarray的N维数组对象,它支持各种数据类型,并且高效地存储和操作同构数据集合。

  3. 高效的数组运算:NumPy中的数组支持快速的元素级数学运算、逻辑运算以及广播机制,能够以接近C语言的速度进行大规模数据处理。

  4. 矩阵运算:提供对矩阵的各种操作,如加减乘除、转置、求逆、解线性方程组、特征值分解、奇异值分解等。

  5. 数组索引与切片:类似于Python原生列表,但更加灵活,支持高级索引和花式索引。

  6. 统计函数:包含一系列统计学相关函数,例如求和、平均、中位数、标准差、最大值、最小值等。

  7. 排序和筛选:可以对数组进行排序,同时支持条件筛选操作。

  8. 形状变换:允许改变数组的维度和大小,包括reshape、flatten、squeeze、expand_dims等操作。

  9. 文件I/O:支持从磁盘读写多种格式的数据,如二进制、文本或图像文件。

  10. 随机数生成:内置了多个分布的随机数生成器,便于模拟和概率统计实验。

三、NumPy实战:计算最强大脑

创建数组

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

数组运算

result = arr1 + arr2

数学函数

result = np.sin(arr)

统计功能

mean = np.mean(arr)

随机数生成

random_arr = np.random.rand(5)

形状操作

reshaped_arr = arr.reshape(1, 4)

索引和切片

sub_arr = arr[2:4]

线性代数运算

result = np.dot(matrix1, matrix2)

数组拼接

concatenated_arr = np.concatenate((arr1, arr2))

数组重复

repeated_arr = np.repeat(arr, 3)

数组排序

sorted_arr = np.sort(arr)

布尔索引

bool_indexing_arr = arr[arr > 3]

数组转置

transposed_arr = arr.T

数组填充

filled_arr = np.full((3, 3), 5)

数组切割

split_arr = np.split(arr, 3)

实例1

import numpy as np# 创建一个2D数组(矩阵)
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(matrix)# 对数组进行转置操作
transpose = matrix.T
print(transpose)# 计算矩阵的行和列的总和
row_sums = np.sum(matrix, axis=1)
col_sums = np.sum(matrix, axis=0)
print(row_sums, col_sums)

实例2

import numpy as np  # 创建一个NumPy数组  
arr = np.array([5, 2, 8, 1, 9])  # 对数组进行排序  
sorted_arr = np.sort(arr)  
print("排序后的数组:", sorted_arr)  # 获取排序后数组的索引  
index = np.argsort(arr)  
print("排序后数组的索引:", index)

实例3

import numpy as np# 创建一串随机数并计算统计指标
data = np.random.randn(1000)  # 创建一个标准正态分布的随机数组
mean = np.mean(data)  # 计算平均值
median = np.median(data)  # 计算中位数
std_dev = np.std(data)  # 计算标准差
print(f"Mean: {mean}")
print(f"Median: {median}")
print(f"Standard Deviation: {std_dev}")

实例4

import numpy as np# 创建系数矩阵和常数向量
A = np.array([[2, 1], [1, 3]])
b = np.array([8, 6])# 使用numpy.linalg.solve求解Ax=b
solution = np.linalg.solve(A, b)
print(solution)

实例5

import numpy as np# 创建两个NumPy矩阵  
A = np.array([[1, 2], [3, 4]])  
B = np.array([[5, 6], [7, 8]])  # 进行矩阵加法、减法和乘法运算  
C = A + B  
D = A - B  
E = np.dot(A, B)  print("矩阵加法结果:\n", C)  
print("矩阵减法结果:\n", D)  
print("矩阵乘法结果:\n", E)

实例6

from PIL import Image
import numpy as np# 加载图片为numpy数组
img = Image.open("image.jpg")
img_array = np.array(img)# 图像灰度化
gray_img = np.dot(img_array[...,:3], [0.299, 0.587, 0.114])
gray_img = gray_img.astype(np.uint8)# 将灰度图保存回文件
Image.fromarray(gray_img).save("gray_image.jpg")

实例7

np.random.rand(): 返回一个在 [0, 1) 之间的随机浮点数。
np.random.randint(low, high, size): 返回一个指定范围内的随机整数数组。
np.random.randn(d0, d1, ..., dn): 返回一个或多个标准正态分布的随机数数组。
np.random.random(size): 返回一个随机浮点数数组,其值在 [0, 1) 之间。
np.random.choice(a, size, replace=True, p=None): 从数组 a 中随机选择元素,或者使用概率 p 进行选择。
np.random.shuffle(x): 将数组 x 的元素顺序随机打乱。
np.random.permutation(x): 返回数组 x 的随机排列# 除了这些与标准库并不多的,另外还有近30个各种抽取样本的np.random库函数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/622678.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java BIO、NIO(通信/群聊系统、零拷贝)、AIO

Java BIO、NIO(通信/群聊系统、零拷贝)、AIO BIO、NIO、AIO特点和场景 BIO(Blocking I/O)、NIO(Non-blocking I/O)、AIO(Asynchronous I/O)是Java中用于处理I/O操作的三种不同的I/O模型,它们具…

P1080 [NOIP2012 提高组] 国王游戏 贪心

[NOIP2012 提高组] 国王游戏 传送门 题目描述 恰逢 H 国国庆,国王邀请 n n n 位大臣来玩一个有奖游戏。首先,他让每个大臣在左、右手上面分别写下一个整数,国王自己也在左、右手上各写一个整数。然后,让这 n n n 位大臣排成一…

C. Partitioning the Array - 思维 + gcd

题面 分析 如果让两个数满足对某一个数取模后相等,那么也就是 x m o d m y m o d m x mod m y mod m xmodmymodm,那么也就是 ( x − y ) m o d m 0 m o d m (x - y) mod m 0 mod m (x−y)modm0modm,因此可以推出,对于每一个…

day16 二叉树的最大深度 n叉树的最大深度 二叉树的最小深度 完全二叉树的节点数

题目1:104 二叉树的最大深度 题目链接:104 二叉树的最大深度 题意 二叉树的根节点是root,返回其最大深度(从根节点到最远叶子节点的最长路径上的节点数) 递归 根节点的的高度就是二叉树的最大深度 所以使用后序遍…

系列六、Spring Security中的认证 授权 角色继承

一、Spring Security中的认证 & 授权 & 角色继承 1.1、概述 关于Spring Security中的授权,请参考【系列一、认证 & 授权】,这里不再赘述。 1.2、资源类 /*** Author : 一叶浮萍归大海* Date: 2024/1/11 20:58* Description: 测试资源*/ Re…

思科模拟器中环境条件设置第一步

一直设想若上图中的温度在不同房间显示和物理环境一样的结果。 于是乎看了 经过实验 原因是 在模拟器的physcial中设置就可以实现不同的温度。 接下来就是合理使用了! 对类似实验感兴趣的同学,一起加入尝试:微信号imaguofeng 2024年1月14…

Matlab 一种基于机载LiDAR点云电力线自动提取方法之二

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 之前的方法在面对地面为水面时,由于地面点的缺失会导致电力线提取错误,因此这里使用CSF地面点滤波改进电力线的提取过程。关于CSF滤波的相关配置可以详看:Matlab CSF地面点滤波(插件),改进之后的代码如下所示…

自定义call/apply/bind函数

这里,我们使用原型方法给 Function 对象添加了 myCall、myApply 和 myBind 方法。 myCall 和 myApply 非常相似,它们的不同之处在于参数传递方式。 myCall 函数使用剩余参数语法 ...args 来传递参数,而 myApply 函数接受一个数组作为参数。…

maven的scop作用域依赖问题导致idea社区版报错

1. 错误:代码没改,卸了专业版后改用社区版出现以下报错 2024-01-08 16:34:29.374 ERROR [main] org.springframework.boot.SpringApplication.reportFailure:823 Application run failed java.lang.IllegalStateException: Error processing condition …

计算机找不到vcomp140.dll怎样修复?马上教会你修复dll问题

在计算机系统运行过程中,遭遇“vcomp140.dll丢失”的场景并不少见,这一问题的出现往往伴随着软件无法正常启动、运行时错误提示或者系统性能下降等现象。具体场景可能包括但不限于:用户在尝试打开某个依赖于Visual C Redistributable库的应用…

数据在AI图像修复任务中的核心作用

在人工智能(AI)领域,数据的重要性不言而喻。尤其在图像修复任务中,数据的精度和质量直接影响着AI模型的性能。图像修复是指利用AI技术自动识别图像中的缺陷或遮挡物,并对其进行修复或还原的过程。这项技术广泛应用于各…

基于pyradiomics影像组学特征提取

基于pyradiomics影像组学特征提取 特征提取:1 pyradiomics的使用:1.1,在python环境下安装pyradiomics:1.2,设置特征提取器,获得想要特征:1.2.1 图像类型1.2.2 目标特征设置1.2.3 特征提取器设置 2 代码示例;参考&#…

【web服务搭建实验】之nginx基础学习

目录 一、nginx的简介二、nginx安装实验虚拟主机的配置web服务器的主流实现方式-LAMP和LNMP 一、nginx的简介 Nginx是一款轻量级HTTP服务器,同时也是代理邮箱服务器,具备反向代理,通用代理的功能。支持多个系统,和不同操作系统。…

秒杀系统如何设计

秒杀系统主要有以下特点 1、高并发瞬时流量 2、热点数据 3、数据量大 4、库存的正确扣减 5、黄牛抢购 6、重复下单 7、对普通交易的影响 前后端缓存 首先是秒杀功能的开启,以及前端资源的访问,这部分内容一般都是提前放到CDN中,让这些静态…

图机器学习年度汇集

一、深度学习模型优化 在图机器学习领域,深度学习模型的优化尤为重要。今年的主要进展包括了利用先进的优化算法提高模型精度、减少训练时间以及对大规模图数据的适应性。部分团队还推出了定制化的深度学习模型,特别适用于复杂的图形结构和交互。 二、…

【算法】Java-二叉树的右视图(BFS、DFS两种解法)

题目要求: 给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4] 输出: [1,3,4]示例 2: 输入: [1,null,3] 输出: [1,3]示例 3: 输入…

e2studio开发三轴加速度计LIS2DW12(3)----检测活动和静止状态

e2studio开发三轴加速度计LIS2DW12.3--检测活动和静止状态 概述视频教学样品申请源码下载新建工程工程模板保存工程路径芯片配置工程模板选择时钟设置UART配置UART属性配置设置e2studio堆栈e2studio的重定向printf设置R_SCI_UART_Open()函数原型回调函数user_uart_callback ()…

Jetpack Compose -> 声明式UI Modifier

前言 本章主要介绍下 Compose 的声明式 UI 以及初级写法&#xff1b; 什么是声明式UI 传统UI 传统 UI 方式来声明UI <androidx.appcompat.widget.LinearLayoutCompat android:layout_width"match_parent" android:layout_height"match_parent&quo…

Pytorch中的标准维度顺序

在PyTorch中&#xff0c;如果一个张量包括通道数&#xff08;C&#xff09;、宽度&#xff08;W&#xff09;、高度&#xff08;H&#xff09;和批量大小&#xff08;N&#xff09;&#xff0c;那么它的标准维度顺序是 [N, C, H, W]&#xff0c;即&#xff1a; 第一个维度 N 是…

test Property-based Testing-04-junit-quickcheck

拓展阅读 开源 Auto generate mock data for java test.(便于 Java 测试自动生成对象信息) 开源 Junit performance rely on junit5 and jdk8.(java 性能测试框架。性能测试。压测。测试报告生成。) junit-quickcheck&#xff1a;基于 JUnit 风格的属性驱动测试库 junit-qu…