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

python科学计算:NumPy 数组的运算

1 数组的数学运算

NumPy 提供了一系列用于数组运算的函数和操作符,这些运算可以作用于数组的每个元素上。常见的数学运算包括加、减、乘、除等。

1.1 元素级运算

NumPy 支持对数组的每个元素进行逐元素运算。这些操作可以通过标准的数学符号或 NumPy 函数来完成。

import numpy as np# 创建两个数组
a = np.array([1, 2, 3, 4])
b = np.array([10, 20, 30, 40])# 元素级加法
add_result = a + b
print("加法结果:", add_result)# 元素级减法
sub_result = a - b
print("减法结果:", sub_result)# 元素级乘法
mul_result = a * b
print("乘法结果:", mul_result)# 元素级除法
div_result = a / b
print("除法结果:", div_result)
1.2 幂运算和模运算

NumPy 还支持数组的幂运算和模运算,分别使用 **% 操作符。

# 幂运算
power_result = a ** 2
print("幂运算结果:", power_result)# 模运算
mod_result = b % 3
print("模运算结果:", mod_result)
1.3 数组的数学函数

NumPy 提供了丰富的数学函数库,用于计算数组中的常用数学操作,如平方根、对数、三角函数等。

# 计算平方根
sqrt_result = np.sqrt(a)
print("平方根:", sqrt_result)# 计算自然对数
log_result = np.log(a)
print("自然对数:", log_result)# 计算正弦值
sin_result = np.sin(a)
print("正弦值:", sin_result)

这些函数可以直接作用于数组的每个元素上,无需编写循环,能够极大提高代码的简洁性和执行效率。


2 数组与标量运算

NumPy 支持数组与标量之间的运算。标量可以与数组的每个元素进行加、减、乘、除等操作,这在数学建模和物理模拟中非常有用。

# 数组与标量加法
add_scalar = a + 5
print("数组与标量加法:", add_scalar)# 数组与标量乘法
mul_scalar = b * 2
print("数组与标量乘法:", mul_scalar)# 数组与标量除法
div_scalar = b / 10
print("数组与标量除法:", div_scalar)

数组与标量的运算会在内部自动将标量扩展为与数组相同的形状,从而进行逐元素操作,这就是 广播机制 的一部分内容,后面将详细介绍。


3 数组间的运算

NumPy 允许对两个形状相同的数组进行逐元素运算。常见的运算符如 +-*/ 都可以用于两个数组之间。下面我们来看一些常见的数组间运算。

1 数组加法
# 创建两个形状相同的数组
arr1 = np.array([[1, 2, 3], [4, 5, 6]])
arr2 = np.array([[10, 20, 30], [40, 50, 60]])# 逐元素加法
result_add = arr1 + arr2
print("数组加法结果:\n", result_add)
2 数组减法
# 逐元素减法
result_sub = arr2 - arr1
print("数组减法结果:\n", result_sub)
3 数组乘法和除法
# 逐元素乘法
result_mul = arr1 * arr2
print("数组乘法结果:\n", result_mul)# 逐元素除法
result_div = arr2 / arr1
print("数组除法结果:\n", result_div)
4 矩阵乘法

值得注意的是,* 运算符进行的是逐元素乘法,而 矩阵乘法 可以使用 dot() 函数或 @ 运算符。

# 进行矩阵乘法
result_dot = np.dot(arr1, arr2.T)  # 使用转置使其适配矩阵乘法的规则
print("矩阵乘法结果:\n", result_dot)

矩阵乘法广泛应用于机器学习、神经网络和物理模拟等领域。


4 广播机制(Broadcasting)

广播机制 是 NumPy 的一项强大功能,它允许在不相同形状的数组之间进行运算。NumPy 会自动扩展较小的数组,以适应较大数组的形状,从而实现元素级运算。这种机制可以有效减少数据的冗余,提升代码效率。

4.1 广播的基本规则

广播机制遵循以下规则:

  1. 如果两个数组的维度不相同,则在低维数组的左边补齐维度,使得两个数组具有相同的维度数。
  2. 如果两个数组在某个维度上的长度不一致,则较短的数组会被扩展为较长的数组。如果其中一个数组的某个维度为 1,那么它将在计算时沿着这个维度进行复制。
4.2 广播实例

以下是一个简单的广播例子,一个一维数组与二维数组进行运算。

# 创建一个二维数组和一个一维数组
arr2d = np.array([[1, 2, 3], [4, 5, 6]])
arr1d = np.array([10, 20, 30])# 进行广播运算
broadcast_result = arr2d + arr1d
print("广播机制运算结果:\n", broadcast_result)

在这个例子中,arr1d 被扩展为与 arr2d 具有相同的形状,然后进行逐元素加法。

4.3 高级广播操作

在多维数组中,广播可以极大减少数据冗余。例如:

# 创建一个 3x1 的数组
arr_a = np.array([[1], [2], [3]])# 创建一个 1x3 的数组
arr_b = np.array([10, 20, 30])# 进行广播操作
broadcast_result = arr_a + arr_b
print("高级广播运算结果:\n", broadcast_result)

在这个例子中,arr_a 会沿着列方向扩展,arr_b 会沿着行方向扩展,最终得到一个 3x3 的矩阵。


5 特殊数组运算: 条件运算与逻辑运算

除了基本的数学运算,NumPy 还支持条件判断和逻辑运算,这在数据筛选和科学计算中非常有用。

5.1 条件运算

NumPy 支持对数组进行条件判断,返回布尔值数组。

arr = np.array([1, 2, 3, 4, 5])# 判断哪些元素大于 3
cond_result = arr > 3
print("大于 3 的元素:", cond_result)
5.2 数组筛选

可以根据条件运算结果进行数组筛选。

# 筛选大于 3 的元素
filtered_arr = arr[arr > 3]
print("筛选出的元素:", filtered_arr)

相关文章:

python科学计算:NumPy 数组的运算

1 数组的数学运算 NumPy 提供了一系列用于数组运算的函数和操作符,这些运算可以作用于数组的每个元素上。常见的数学运算包括加、减、乘、除等。 1.1 元素级运算 NumPy 支持对数组的每个元素进行逐元素运算。这些操作可以通过标准的数学符号或 NumPy 函数来完成。…...

SAP B1 基础实操 - 用户定义字段 (UDF)

目录 一、功能介绍 1. 使用场景 2. 操作逻辑 3. 常用定义部分 3.1 主数据 3.2 营销单据 4. 字段设置表单 4.1 字段基础信息 4.2 不同类详细设置 4.3 默认值/必填 二、案例 1 要求 2 操作步骤 一、功能介绍 1. 使用场景 在实施过程中,经常会碰见用户需…...

Idea发布springboot项目无法识别到webapp下面的静态资源

问题: Idea发布springboot项目无法识别到webapp下面的静态资源 访问报错404 解决办法: 修改之后重新构建,访问成功...

Redis及其他缓存

1.NOSQL、Redis概述,通用命令,redis五大数据类型,三大特殊数据类型 NOSQL概述: (NOT ONLY SQL-不仅仅是SQL),泛指非关系型数据库,为解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用问题 常见no…...

golang入门

学习视频:https://www.bilibili.com/video/BV1gf4y1r79E go安装 go源码包一般解压到/usr/local/linux下go的环境变量配置: export GOROOT/usr/local/go # 源码包export GOPATH$HOME/go # 工作路径export PATH P A T H : PATH: PATH:GOROOT/bin:$GOPATH/…...

Behind the Code:与 Rakic 和 Todorovic 对话 OriginTrail 如何实现 AI 去中心化

原文:https://www.youtube.com/watch?vZMuLyLCtE3s&listPLtyd7v_I7PGnko80O0LCwQQsvhwAMu9cv&index12 作者:The Kusamarian 编译:OneBlock 随着人工智能技术的飞速发展,一系列前所未有的挑战随之而来:模型的…...

TS 学习 (持续更新中)

如果我们在 ts 中写 不用运行就能在文件中报错 ts 是一种静态类型的检查 能将运行时出现的错误前置 一般不用 命令行编译 ts 转换成 js 将中文转码 tsc index(.ts) 输入命令生成 配置文件 能在中间进行 配置转换成 js 的哪个规范 es5 还是 6 和其它转…...

el-table使用type=“expand”根据数据条件隐藏展开按钮

一&#xff1a;添加className <el-table :data"tableData" border :loading"loading" :row-class-name"getRowClass" expand-change"expandchange"><el-table-column type"expand"><template #default"…...

9月6日(∠・ω<)⌒☆

1、手写unique_ptr指针指针 #include <iostream> #include <stdexcept>template <typename T> class unique_ptr { public:// 构造函数explicit unique_ptr(T* ptr nullptr) : m_ptr(ptr) {}// 析构函数~unique_ptr() {delete m_ptr;}// 禁止复制构造函数…...

k8s执行crictl images报错

FATA[0000] validate service connection: CRI v1 image API is not implemented for endpoint "unix:///run/containerd/containerd.sock": rpc error: code Unimplemented desc unknown service runtime.v1.ImageService 解决方法&#xff1a; vim /etc/contai…...

基于人工智能的音乐情感分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 音乐情感分类是通过对音乐音频信号进行分析&#xff0c;识别出音乐传递的情感&#xff0c;如“愉快”、“悲伤”、“愤怒”等。该技术…...

MySQL灾难恢复策略:构建稳健的备份与恢复机制

在现代企业环境中&#xff0c;数据的安全性和可靠性至关重要。灾难恢复计划&#xff08;Disaster Recovery Plan, DRP&#xff09;是确保在发生灾难性事件后&#xff0c;能够迅速恢复业务的关键策略。对于依赖MySQL数据库的系统&#xff0c;实现有效的灾难恢复计划尤为重要。本…...

docker安装DVWA(巨简单)

拉取镜像docker pull vulnerables/web-dvwa 启动docker run --rm -it -p 80:80 vulnerables/web-dvwa dvwa:...

使用matplotlab绘制多条形图

##黑马程序学习 这种多个条形图放在一起的图形该怎么画呢&#xff1f; 请看以下代码 #横着的条形图 from matplotlib import pyplot as plt import matplotlib#设置显示中文 和 负号 matplotlib.rcParams[font.sans-serif][SimHei] matplotlib.rcParams[axes.unicode_minus]F…...

五、Selenium操作指南(二)

文章目录 四、获取页面元素属性&#xff08;一&#xff09;get_attribute获取属性&#xff08;二&#xff09;获取文本&#xff08;三&#xff09; 获取其他属性 五、页面交互操作&#xff08;一&#xff09;输入文本 send_keys()&#xff08;二&#xff09;点击 click()&#…...

Peewee+Postgresql+PooledPostgresqlDatabase重连机制

需求&#xff1a; Postgresql数据库服务重启后&#xff0c;需要业务代码正常读写数据库 方案&#xff1a; 通过继承playhouse.shortcuts.ReconnectMixin和playhouse.pool.PooledPostgresqlDatabase来创建一个新的ReconnectPooledPostgresqlDatabase类修改reconnect_errors属性来…...

IIS 反向代理模块: URL Rewrite 和 Application Request Routing (ARR)

需要设置iis反向代理的场景其实挺多的。例如websocket、Server Sent Events(SSE) 都需要反向代理。 对于需要临时放公网访问的应用&#xff0c;直接运行127.0.0.1的开发环境&#xff0c;然后通过反向代理访问127.0.0.1就可以了&#xff0c;省去麻烦的iis设置。 IIS 实现反向代…...

企业在选择CRM系统时需要注意哪些问题呼叫系统外呼系统部署搭建

在这个信息技术快速发展的时代&#xff0c;许多企业为了对客户进行有效的管理对CRM系统进行了实施。那么&#xff0c;有人会问了&#xff0c;企业在选择CRM系统是需要注意哪些问题呢?我们一起来看看 业务需求匹配&#xff1a;系统功能是否与企业当前及未来的需求相符&#xff…...

数据库水平分表方案

数据库分表有很多策略&#xff0c;如下&#xff1a; 数据库分表是处理大型数据库中数据量过大的一种常见策略&#xff0c;它可以提高查询性能、减少锁竞争、降低维护成本等。以下是一些常见的数据库分表方案&#xff1a; 1. **垂直分表&#xff08;Vertical Partitioning&…...

MySQL表操作及约束

修改表 重命名&#xff1a; mysql> alter table user1 rename to user; 新增一列 mysql> alter table user add image_path varchar(128) comment 路径 after birthday; mysql> alter table user add image_path varchar(128) comment 路径 after birthday; Query…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…...