当前位置: 首页 > 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…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分&#xff1a; 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析&#xff1a; CTR…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机&#xff0c;点进去 点进去 查看URL&#xff0c;有 ?fileflag.php说明存在文件包含&#xff0c;原理是php://filter 协议 当它与包含函数结合时&#xff0c;php://filter流会被当作php文件执行。 用php://filter加编码&#xff0c;能让PHP把文件内容…...

字符串哈希+KMP

P10468 兔子与兔子 #include<bits/stdc.h> using namespace std; typedef unsigned long long ull; const int N 1000010; ull a[N], pw[N]; int n; ull gethash(int l, int r){return a[r] - a[l - 1] * pw[r - l 1]; } signed main(){ios::sync_with_stdio(false), …...

【Java多线程从青铜到王者】单例设计模式(八)

wait和sleep的区别 我们的wait也是提供了一个还有超时时间的版本&#xff0c;sleep也是可以指定时间的&#xff0c;也就是说时间一到就会解除阻塞&#xff0c;继续执行 wait和sleep都能被提前唤醒(虽然时间还没有到也可以提前唤醒)&#xff0c;wait能被notify提前唤醒&#xf…...

21-Oracle 23 ai-Automatic SQL Plan Management(SPM)

小伙伴们&#xff0c;有没有迁移数据库完毕后或是突然某一天在同一个实例上同样的SQL&#xff0c; 性能不一样了、业务反馈卡顿、业务超时等各种匪夷所思的现状。 于是SPM定位开始&#xff0c;OCM考试中SPM必考。 其他的AWR、ASH、SQLHC、SQLT、SQL profile等换作下一个话题…...