运用数组和矩阵对数据进行存取和运算——NumPy模块 之六

目录

  NumPy模块介绍

  3.6.1 数组之间的运算

  3.6.2 算术运算

  3.6.3 比较运算

  3.6.4 逻辑运算

  3.6.5 矩阵运算

  3.6.6 广播运算

  3.6.7 聚合运算

  3.6.8 三角函数与指数对数运算

  3.6.9 位运算

  3.6.10 条件运算

  3.6.11 数组的统计运算

  3.6.12 关键问题:数组之间的运算对数组的维度有要求吗?

  3.6.13 总结

  

  NumPy模块介绍

  NumPy 是 Python 科学计算领域的重要基石,与当前 “躺吃旅行” 话题看似不相关,但在数据处理分析上意义重大。我将从它的核心功能、应用场景和优势等方面展开介绍。

  NumPy(Numerical Python)是 Python 语言中用于科学计算的基础库,它提供了高性能的多维数组对象以及大量用于对数组进行操作的函数,是数据科学、机器学习、人工智能等领域不可或缺的工具。NumPy 的核心数据结构是ndarray(多维数组),这种数组允许在内存中以连续的方式存储同类型的数据,相较于 Python 原生列表,它在存储和运算效率上有着显著提升。通过 NumPy,用户可以轻松实现数组的创建、索引、切片、变形,以及各种数学运算,如矩阵乘法、统计计算、傅里叶变换等。

  在实际应用中,NumPy 广泛应用于数据分析、机器学习算法的底层实现、图像和信号处理等领域。例如,在机器学习中,数据集通常会被加载并转换为 NumPy 数组进行预处理和模型训练;在图像处理中,图像数据也会被表示为多维数组,借助 NumPy 提供的函数完成图像的滤波、变换等操作。此外,NumPy 还与众多科学计算库紧密集成,如 SciPy、Pandas 等,共同构建起强大的 Python 科学计算生态,极大地提升了数据处理和分析的效率。

  3.6.1 数组之间的运算

  在 NumPy 中,数组之间的运算可以分为以下几种类型,每种类型都有其独特的应用场景和计算规则:

  3.6.2 算术运算

  对数组元素执行逐元素的数学运算,包括:

  • 基本运算符:+、-、*、/、//(整除)、%(取余)、**(幂运算)
  • 对应函数:add()、subtract()、multiply()、divide()、floor_divide()、mod()、power()

  示例:

import numpy as npa = np.array([1, 2, 3])
b = np.array([4, 5, 6])print(a + b)      # 输出: [5 7 9]
print(a * b)      # 输出: [4 10 18]
print(np.power(a, 2))  # 输出: [1 4 9]

  3.6.3 比较运算

  对数组元素执行逐元素的比较,返回布尔数组,包括:

  • 比较运算符:>、<、>=、<=、==、!=
  • 对应函数:greater()、less()、greater_equal()、less_equal()、equal()、not_equal()

  示例:

a = np.array([1, 2, 3])
b = np.array([2, 2, 2])print(a > b)      # 输出: [False False  True]
print(a == b)     # 输出: [False  True False]

  数组之间的比较运算在实际运用中还是比较广泛的,为了加深同学们对这一块知识的理解,我编写了两个案例,供大家学习掌握,并能在实际编程中灵活运用。

  示例 1:检测学生成绩是否达标

  假设有两个班级的数学考试成绩,需要比较哪些学生的成绩达到了 80 分的优秀标准。

import numpy as np# 创建两个班级的成绩数组
class_a = np.array([78, 85, 92, 65, 88])
class_b = np.array([82, 76, 90, 85, 89])# 比较成绩是否达到80分
excellent_a = class_a >= 80
excellent_b = class_b >= 80print("班级A优秀学生:", excellent_a)  # [False  True  True False  True]
print("班级B优秀学生:", excellent_b)  # [ True False  True  True  True]# 统计优秀学生人数
print("班级A优秀人数:", np.sum(excellent_a))  # 3
print("班级B优秀人数:", np.sum(excellent_b))  # 4

  示例 2:筛选符合条件的二维数据

  假设有一个二维数组表示商品的价格和销量,需要筛选出价格高于 50 且销量大于 100 的商品。

import numpy as np# 创建商品数据:每行表示 [价格, 销量]
products = np.array([[60, 120],[45, 80],[70, 150],[55, 90],[80, 200]
])# 比较价格和销量
price_high = products[:, 0] > 50  # 价格列
sales_high = products[:, 1] > 100  # 销量列# 同时满足两个条件
both_high = price_high & sales_highprint("价格>50的商品:", price_high)  # [ True False  True  True  True]
print("销量>100的商品:", sales_high)  # [ True False  True False  True]
print("符合条件的商品:", both_high)  # [ True False  True False  True]# 筛选符合条件的商品数据
selected_products = products[both_high]
print("筛选结果:\n", selected_products)
# 输出:
# [[ 60 120]
#  [ 70 150]
#  [ 80 200]]

  关键要点

  1. 比较运算返回布尔数组:可直接用于统计或筛选。
  2. 多维数组按元素比较:通过索引选择特定维度(如products[:, 0])。
  3. 逻辑组合条件:使用&(与)、|(或)、~(非)连接多个比较结果。

  3.6.4 逻辑运算

  对布尔数组执行逐元素的逻辑操作,包括:

  • 逻辑运算符:&(与)、|(或)、~(非)、^(异或)
  • 对应函数:logical_and()、logical_or()、logical_not()、logical_xor()

  示例

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

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

相关文章

JGL066生活垃圾滚筒筛分选机实验装置

JGL066生活垃圾滚筒筛分选机实验装置 一.实验目的 本实验对生活垃圾滚筒分选机进行垃圾分选的实验。通过实验达到以下目的&#xff1a; 1.了解分选的原理、方法和影响分选效果的主要因素。 2.确定分选的适宜条件。 二.技术指标 1.生活垃圾分选机处理量分为0.5~2t/h。 2.运动参数…

Excelize 开源基础库发布 2.9.1 版本更新

Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库&#xff0c;基于 ECMA-376&#xff0c;ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Excel、WPS、OpenOffice 等办公软件创建的电子表格文档。支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式&#xf…

xss-labs靶场基础8-10关(记录学习)

前言&#xff1a; 内容&#xff1a; 第八关 关卡资源网站&#xff0c;html编码网站&#xff08;两个网站&#xff0c;一个是实体编号转义&#xff08;只对特殊字符有效&#xff0c;字母无效&#xff09;、实体符号转义&#xff09; 在线Html实体编码解码-HTML Entity Encodi…

Kafka topic 中的 partition 数据倾斜问题

在 Kafka 中&#xff0c;如果一个 Topic 有多个 Partition&#xff0c;但这些 Partition 中的消息数量或流量分布不均衡&#xff0c;就会出现 数据倾斜&#xff08;Data Skew&#xff09; 的问题。 ✅ 什么是数据倾斜&#xff1f; 数据倾斜指的是&#xff1a; 某些 Partitio…

Retrofit vs Feign: 介绍、对比及示例

1. 介绍 Retrofit Retrofit 是 Square 公司开发的一个类型安全的 HTTP 客户端库&#xff0c;主要用于 Android 和 Java 应用。它将 HTTP API 转换为 Java 接口&#xff0c;通过注解来描述 HTTP 请求。 主要特点: 基于注解的 API 定义支持同步和异步调用支持多种数据格式转换…

SpringBoot整合MyBatis-Plus:零XML实现高效CRUD

前言 作为一名开发者&#xff0c;数据库操作是我们日常工作中不可或缺的部分。传统的MyBatis虽然强大&#xff0c;但需要编写大量XML映射文件&#xff0c;这在快速开发的今天显得效率不足。MyBatis-Plus&#xff08;简称MP&#xff09;作为MyBatis的增强工具&#xff0c;在保留…

SpringCloud之Gateway基础认识-服务网关

0、Gateway基本知识 Gateway 是在 Spring 生态系统之上构建的 API 网关服务&#xff0c;基于 Spring &#xff0c;Spring Boot 和 Project Reactor 等技术。 Gateway 旨在提供一种简单而有效的方式来对 API 进行路由&#xff0c;以及提供一些强大的过滤器功能&#xff0c;例如…

Redis扫盲

Redis 缓存中间件 基础篇 键值数据库 key Value 是NoSql数据库 非结构化、无关联的、非SQL、BASE&#xff08;无法满足ACID&#xff09; 命令执行是单线程&#xff0c;符合原子性。 低延迟、速度块&#xff08;基于内存&#xff0c;IO多路复用&#xff0c;良好的编码&am…

【FMMT】基于模糊多模态变压器模型的个性化情感分析

遇到很难的文献看不懂,不应该感到气馁,应该激动,因为外审估计也看不太懂,那么学明白了可以吓唬他 缺陷一:输入依赖性与上下文建模不足​​ ​​缺陷描述​​: 传统自注意力机制缺乏因果关系,难以捕捉序列历史背景多模态数据间的复杂依赖关系未被充分建模CNN/RNN类模型在…

Qt Creator 配置 Android 编译环境

Qt Creator 配置 Android 编译环境 环境配置流程下载JDK修改Qt Creator默认android配置文件修改sdk_definitions.json配置修改的内容 Qt Creator配置 异常处理删除提示占用编译报错连接安卓机调试APP闪退无法进入 debug 断点 环境 Qt Creator 版本 qtcreator-16.0.1Win10 嗯, …

使用聊天模型和提示模板构建一个简单的 LLM 应用程序

官方教程 官方案例 在上面的链接注册后&#xff0c;请确保设置您的环境变量以开始记录追踪 export LANGSMITH_TRACING"true" export LANGSMITH_API_KEY"..."或者&#xff0c;如果在笔记本中&#xff0c;您可以使用以下命令设置它们 import getpass imp…

React vs Vue:点击外部事件处理的对比与实现

React vs Vue&#xff1a;点击外部事件处理的对比与实现 在 Web 应用中&#xff0c;“点击外部事件监听”是一种常见需求&#xff0c;典型应用如&#xff1a;点击弹窗外部关闭弹窗、点击下拉菜单外关闭菜单。虽然在 React 和 Vue 中实现的原理类似——都是通过监听 document 的…

3335. 字符串转换后的长度 I

3335. 字符串转换后的长度 I class Solution:def lengthAfterTransformations(self, s: str, t: int) -> int:# 大质数mod 10**97# 创建一个长度为26的数组cnt&#xff0c;对应26个小写字母cnt [0]*26# 计算出s中26个字符分别有多少个for ch in s:cnt[ord(ch)-ord(a)] 1f…

Java详解LeetCode 热题 100(15):LeetCode 189. 轮转数组(Rotate Array)详解

文章目录 1. 题目描述2. 理解题目3. 解法一&#xff1a;使用额外数组3.1 思路3.2 Java代码实现3.3 代码详解3.4 复杂度分析3.5 适用场景 4. 解法二&#xff1a;环状替换法&#xff08;原地算法&#xff09;4.1 思路4.2 Java代码实现4.3 代码详解4.4 复杂度分析4.5 陷阱与注意事…

数据治理域——日志数据采集设计

摘要 本文主要介绍了Web页面端日志采集的设计。首先阐述了页面浏览日志采集&#xff0c;包括客户端日志采集的实现方式、采集内容及技术亮点。接着介绍了无线客户端端日志采集&#xff0c;包括UserTrack的核心设计、移动端与浏览器端采集差异以及典型应用场景崩溃分析。最后探…

PYTHON训练营DAY24

# SO代码我们的感情好像跳楼机 # 元组创建时&#xff0c;可以省略括号&#xff1a;my_tuple4 10, 20, thirty # 字符串要加“ ” 元组 一、创建 my_tuple1 (1, 2, 3) my_tuple2 (a, b, c) my_tuple3 (1, hello, 3.14, [4, 5]) # 可以包含不同类型的元素 print(my_tupl…

超声波传感器模块

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ 文章目录 1.HC-SR04介绍2.HC-SR04原理介绍2.1原理概述3.2原理详解 4驱动代码编写4.1写前思考4.2硬件连线 5.总结hcsr04.hhcsr04.c 1.HC-SR04介绍 超声波传感器有很多种类的型号&#xff1a;HC-SR04、UC-025、…

《Effective Python》第2章 字符串和切片操作——深入理解Python 中的字符数据类型(bytes 与 str)的差异

引言 本篇博客基于学习《Effective Python》第三版 Chapter 2: Strings and Slicing 中的 Item 10: Know the Differences Between bytes and str 的总结与延伸。在 Python 编程中&#xff0c;字符串处理是几乎每个开发者都会频繁接触的基础操作。然而&#xff0c;Python 中的…

py7zr解压文件时报错CrcError(crc32, f.crc32, f.filename)

报错信息 Traceback (most recent call last):File "/home/hp/project/test/file_util.py", line 130, in extract_archive_7zarchive.extract(targets[fixed_file], pathoutput_dir, recursiveTrue)File "/home/hp/miniconda3/envs/celery/lib/python3.10/sit…

物理:由基本粒子组成的个体能否提炼和重组?

个体差异源于基本粒子组合的复杂性与随机性,这一假设若成立,确实可能为生物医学带来革命性突破——但需要突破技术、理论与系统层级的多重壁垒。以下从科学逻辑与技术路径展开分析: 一、随机组合中的共性与稳定结构 1. 自然界的自组织规律 涌现性(Emergence):尽管粒子组…