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,那么它将在计算时沿着这个维度进行复制。
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”根据数据条件隐藏展开按钮
一:添加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 解决方法: vim /etc/contai…...

基于人工智能的音乐情感分类系统
目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 音乐情感分类是通过对音乐音频信号进行分析,识别出音乐传递的情感,如“愉快”、“悲伤”、“愤怒”等。该技术…...
MySQL灾难恢复策略:构建稳健的备份与恢复机制
在现代企业环境中,数据的安全性和可靠性至关重要。灾难恢复计划(Disaster Recovery Plan, DRP)是确保在发生灾难性事件后,能够迅速恢复业务的关键策略。对于依赖MySQL数据库的系统,实现有效的灾难恢复计划尤为重要。本…...

docker安装DVWA(巨简单)
拉取镜像docker pull vulnerables/web-dvwa 启动docker run --rm -it -p 80:80 vulnerables/web-dvwa dvwa:...

使用matplotlab绘制多条形图
##黑马程序学习 这种多个条形图放在一起的图形该怎么画呢? 请看以下代码 #横着的条形图 from matplotlib import pyplot as plt import matplotlib#设置显示中文 和 负号 matplotlib.rcParams[font.sans-serif][SimHei] matplotlib.rcParams[axes.unicode_minus]F…...
五、Selenium操作指南(二)
文章目录 四、获取页面元素属性(一)get_attribute获取属性(二)获取文本(三) 获取其他属性 五、页面交互操作(一)输入文本 send_keys()(二)点击 click()&#…...
Peewee+Postgresql+PooledPostgresqlDatabase重连机制
需求: Postgresql数据库服务重启后,需要业务代码正常读写数据库 方案: 通过继承playhouse.shortcuts.ReconnectMixin和playhouse.pool.PooledPostgresqlDatabase来创建一个新的ReconnectPooledPostgresqlDatabase类修改reconnect_errors属性来…...

IIS 反向代理模块: URL Rewrite 和 Application Request Routing (ARR)
需要设置iis反向代理的场景其实挺多的。例如websocket、Server Sent Events(SSE) 都需要反向代理。 对于需要临时放公网访问的应用,直接运行127.0.0.1的开发环境,然后通过反向代理访问127.0.0.1就可以了,省去麻烦的iis设置。 IIS 实现反向代…...
企业在选择CRM系统时需要注意哪些问题呼叫系统外呼系统部署搭建
在这个信息技术快速发展的时代,许多企业为了对客户进行有效的管理对CRM系统进行了实施。那么,有人会问了,企业在选择CRM系统是需要注意哪些问题呢?我们一起来看看 业务需求匹配:系统功能是否与企业当前及未来的需求相符ÿ…...
数据库水平分表方案
数据库分表有很多策略,如下: 数据库分表是处理大型数据库中数据量过大的一种常见策略,它可以提高查询性能、减少锁竞争、降低维护成本等。以下是一些常见的数据库分表方案: 1. **垂直分表(Vertical Partitioning&…...

MySQL表操作及约束
修改表 重命名: 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编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...

AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...

pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决
问题: pgsql数据库通过备份数据库文件进行还原时,如果表中有自增序列,还原后可能会出现重复的序列,此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”,…...
游戏开发中常见的战斗数值英文缩写对照表
游戏开发中常见的战斗数值英文缩写对照表 基础属性(Basic Attributes) 缩写英文全称中文释义常见使用场景HPHit Points / Health Points生命值角色生存状态MPMana Points / Magic Points魔法值技能释放资源SPStamina Points体力值动作消耗资源APAction…...

GAN模式奔溃的探讨论文综述(一)
简介 简介:今天带来一篇关于GAN的,对于模式奔溃的一个探讨的一个问题,帮助大家更好的解决训练中遇到的一个难题。 论文题目:An in-depth review and analysis of mode collapse in GAN 期刊:Machine Learning 链接:...
Shell 解释器 bash 和 dash 区别
bash 和 dash 都是 Unix/Linux 系统中的 Shell 解释器,但它们在功能、语法和性能上有显著区别。以下是它们的详细对比: 1. 基本区别 特性bash (Bourne-Again SHell)dash (Debian Almquist SHell)来源G…...