当前位置: 首页 > 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;适应复杂网…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决

问题&#xff1a; pgsql数据库通过备份数据库文件进行还原时&#xff0c;如果表中有自增序列&#xff0c;还原后可能会出现重复的序列&#xff0c;此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”&#xff0c;…...

游戏开发中常见的战斗数值英文缩写对照表

游戏开发中常见的战斗数值英文缩写对照表 基础属性&#xff08;Basic Attributes&#xff09; 缩写英文全称中文释义常见使用场景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 解释器​​&#xff0c;但它们在功能、语法和性能上有显著区别。以下是它们的详细对比&#xff1a; ​​1. 基本区别​​ ​​特性​​​​bash (Bourne-Again SHell)​​​​dash (Debian Almquist SHell)​​​​来源​​G…...