python科学计算:NumPy 数组的高级操作
1 数组的形状变换
NumPy 提供了多种方法来改变数组的形状。这些方法不会改变数组的内容,而是重新组织数据的排列方式。
1.1 reshape()
函数
reshape()
是最常用的形状变换函数,它可以改变数组的形状,前提是变换后的总元素数量与原数组一致。
import numpy as np# 创建一个一维数组
arr = np.arange(12)# 将一维数组变换为 3x4 的二维数组
reshaped_arr = arr.reshape(3, 4)print("原数组:", arr)
print("变换后的数组:\n", reshaped_arr)
注意: 如果变换后的维度不能满足元素总数要求,
reshape()
会抛出错误。
1.2 ravel()
函数
ravel()
可以将多维数组展平为一维数组,返回的是原数组的视图,修改展平后的数组也会影响原数组。
# 展平二维数组
flattened_arr = reshaped_arr.ravel()
print("展平后的数组:", flattened_arr)
1.3 transpose()
函数
transpose()
用于对多维数组进行转置操作,交换其维度。对于二维数组,转置会将行和列互换。
# 对二维数组进行转置
transposed_arr = reshaped_arr.transpose()
print("转置后的数组:\n", transposed_arr)
1.4 resize()
函数
resize()
和 reshape()
类似,但不同的是,resize()
会直接修改原数组,并且在调整数组大小时,会自动填充或截取数据。
# 使用 resize 改变数组大小
reshaped_arr.resize(2, 6)
print("使用 resize 改变后的数组:\n", reshaped_arr)
2 数组的合并与分割
NumPy 提供了方便的数组合并与分割操作,可以灵活处理数据的拼接与拆分。
2.1 数组的合并
水平合并(hstack) 和 垂直合并(vstack) 是最常见的数组合并操作,用于将多个数组沿着不同轴合并。
# 创建两个数组
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])# 水平合并
hstack_arr = np.hstack((arr1, arr2))
print("水平合并后的数组:\n", hstack_arr)# 垂直合并
vstack_arr = np.vstack((arr1, arr2))
print("垂直合并后的数组:\n", vstack_arr)
2.2 数组的分割
NumPy 提供了 split()
函数,可以将数组按照指定的规则进行分割。
# 创建一个数组
arr = np.arange(16).reshape(4, 4)# 按行分割为两个数组
split_arr = np.split(arr, 2, axis=0)
print("按行分割的数组:\n", split_arr)# 按列分割为两个数组
split_arr_col = np.split(arr, 2, axis=1)
print("按列分割的数组:\n", split_arr_col)
3 数组的排序与搜索
排序和搜索操作在数据分析中非常常用。NumPy 提供了多种方法来对数组进行排序、筛选和搜索。
3.1 数组排序
sort()
函数可以对数组进行排序,支持对一维数组、二维数组进行排序,并且可以指定沿哪个轴进行排序。
# 创建一个随机数组
arr = np.random.randint(1, 100, size=(4, 4))# 对数组进行排序(默认沿最后一个轴)
sorted_arr = np.sort(arr)print("原数组:\n", arr)
print("排序后的数组:\n", sorted_arr)
可以使用 axis
参数指定沿哪个维度进行排序:
# 沿着行排序
sorted_arr_row = np.sort(arr, axis=1)
print("按行排序后的数组:\n", sorted_arr_row)# 沿着列排序
sorted_arr_col = np.sort(arr, axis=0)
print("按列排序后的数组:\n", sorted_arr_col)
3.2 数组的搜索
argmax()
和 argmin()
函数用于查找数组中最大值或最小值的索引,where()
函数则可以用于根据条件查找满足条件的元素。
# 查找数组中最大值和最小值的位置
max_index = np.argmax(arr)
min_index = np.argmin(arr)print("最大值的位置:", max_index)
print("最小值的位置:", min_index)# 使用 where 查找数组中大于 50 的元素
condition = np.where(arr > 50)
print("数组中大于 50 的元素索引:", condition)
3.3 argsort()
函数
argsort()
返回的是排序后的索引值,而不是排序后的数组本身。这在需要保留原数组顺序的同时对索引进行操作时非常有用。
# 创建一个随机数组
arr = np.array([42, 12, 19, 33])# 使用 argsort 获取排序后的索引
sorted_index = np.argsort(arr)
print("排序后的索引:", sorted_index)# 使用排序后的索引访问原数组
sorted_arr = arr[sorted_index]
print("按索引排序后的数组:", sorted_arr)
4 数组的去重与重复
NumPy 提供了去重和生成重复数据的功能,这在数据预处理和特征工程中非常常见。
1 数组去重
unique()
函数用于对数组进行去重,返回的是去重后的数组。
# 创建一个包含重复元素的数组
arr = np.array([1, 2, 2, 3, 4, 4, 5])# 使用 unique 函数去重
unique_arr = np.unique(arr)
print("去重后的数组:", unique_arr)
2 数组的重复
tile()
和 repeat()
函数可以用于生成重复数据。
# 使用 repeat 函数重复每个元素 2 次
repeat_arr = np.repeat(arr, 2)
print("重复后的数组:", repeat_arr)# 使用 tile 函数将整个数组重复 2 次
tile_arr = np.tile(arr, 2)
print("数组重复后的结果:", tile_arr)
相关文章:
python科学计算:NumPy 数组的高级操作
1 数组的形状变换 NumPy 提供了多种方法来改变数组的形状。这些方法不会改变数组的内容,而是重新组织数据的排列方式。 1.1 reshape() 函数 reshape() 是最常用的形状变换函数,它可以改变数组的形状,前提是变换后的总元素数量与原数组一致…...

【补-网络安全】日常运维(二)终端端口占用排查
文章目录 一、利用ipconfig、netstat 命令行统计二 、策略封禁IP 引言:检查频繁,第一步我们梳理完资产,第二步应该对资产终端进行一个排查,诊断把脉,了解清楚系统的端口占用及开放情况 一、利用ipconfig、netstat 命令行统计 1.先用ipconfig定位该终端的IP地址 2.明确IP地址后…...

设计模式之适配器模式:软件世界的桥梁建筑师
一、什么是适配器模式 适配器模式(Adapter Pattern)是一种结构型设计模式(Structural Pattern),通过将类的接口转换为客户期望的另一个接口,适配器可以让不兼容的两个类一起协同工作。其核心思想是通过一个…...
Java 入门指南:Java 并发编程 —— Fork/Join 框架 实现任务的拆分与合并
Fork/Join Fork/Join 是Java并发编程中的一个框架,用于解决大型任务的并行执行问题。它于 Java 7中引入,旨在简化对多核处理器上可并行执行任务的开发。 Fork/Join 框架基于分治(divide and conquer)的设计思想。它将大型任务划…...
token过期时间分平台(web和app)设置方法
token分平台设置方法 本文介绍了Spring下的登录和鉴权机制的主要方法以及 token认证的主要流程,并介绍在spring中web端和APP端设置不同token过期时间的实现方法。主要基于SpringBootspringSecurityJWT框架实现。 一、应用场景 同一系统的跨平台操作,基于…...

[000-01-008].Seata案例应用
业务说明:这里我们创建三个服务,一个订单服务,一个库存服务,一个账户服务。当用户下单时,会在订单服务中创建一个订单,然后通过远程调用库存服务来扣减下单商品的库存;再通过远程调用账户服务来…...

超详细!!!electron-vite-vue开发桌面应用之创建新窗口以及主进程和子进程的通信监听(十二)
云风网 云风笔记 云风知识库 一、新建打开窗口 1、在electron/main.ts中加入主进程打开窗口逻辑代码 import { ipcMain } from "electron"; ipcMain.handle("open-win", (_, arg) > {const childWindow new BrowserWindow({webPreferences: {preloa…...

java编辑器——IntelliJ IDEA
java编辑器有两种选择——IntelliJ IDEA和VsCode。其中IntelliJ IDEA现在是企业用的比较多的,是专门为java设计的,而VsCode则是通过插件来实现Java编辑的。 1.IntelliJ IDEA 官网下载链接:https://www.jetbrains.com/idea/ 注意选择社区版…...
经验笔记:SSL证书
SSL证书经验笔记 1. 什么是SSL证书? SSL(Secure Sockets Layer)证书是一种数字证书,用于在客户端(如浏览器)和服务器之间建立加密连接,以确保数据传输的安全性。随着互联网的发展,…...

设计模式之装饰器模式:让对象功能扩展更优雅的艺术
一、什么是装饰器模式 装饰器模式(Decorator Pattern)是一种结构型设计模式(Structural Pattern),它允许用户通过一种灵活的方式来动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比使用…...
Anchor Alignment Metric来优化目标检测的标签分配和损失函数。
文章目录 背景假设情况任务和目标TaskAligned方法的应用1. **计算Anchor Alignment Metric**2. **动态样本分配**3. **调整损失函数** 示例总结 背景 假设我们在进行目标检测任务,并且使用了YOLOv8模型。我们希望通过TaskAligned方法来优化Anchor与目标的匹配程度&…...

C++---由优先级队列认识仿函数
文章目录 一、优先级队列是什么? 二、如何使用优先级队列 1、优先级队列容器用法 2、为什么容器本身无序? 三、什么是仿函数? 1. 什么是仿函数? 2. 仿函数的优势 四、仿函数如何使用? 1、重载operator()函数 2、运用第…...
Client访问Server访问慢的原因
1. 网络层面的问题 网络延迟:客户端与服务器之间的地理距离较远(跨ISP、路径次优),导致高网络延迟(如高 RTT 值)。使用 ping 或 traceroute 工具可以帮助定位网络延迟的来源 - mtr: 结合了ping和traceroute功能&#…...

用RPC Performance Inspector 优化你的区块链
目录 什么是RPC? RPC Performance Inspector 是做什么的? 为什么需要这个工具? 如何使用它? 适合谁用? 如何使用? 什么是RPC? RPC Performance Inspector 是一个专门用于测试和分析RPC性能…...

linux如何查看内存条是ddr几代
在 Linux 系统中,可以通过以下几种方法查看内存条的类型和代数(如 DDR3、DDR4 等): 1. 使用 dmidecode 命令 dmidecode 是一个工具,它可以从系统的 DMI 表(也称为 SMBIOS 表)中提取硬件信息&a…...
LeetCode 3153.所有数对中数位差之和:计数
【LetMeFly】3153.所有数对中数位差之和:计数 力扣题目链接:https://leetcode.cn/problems/sum-of-digit-differences-of-all-pairs/ 车尔尼有一个数组 nums ,它只包含 正 整数,所有正整数的数位长度都 相同 。 两个整数的 数位…...
Spring Boot 整合 Sentinel 实现流量控制
在微服务架构中,流量控制是保障系统稳定性和高可用性的关键技术之一。阿里巴巴开源的 Sentinel 是一款面向分布式系统的流量防护组件,旨在从流量控制、熔断降级、系统负载保护等多个维度保障服务的稳定性。本文将详细介绍如何在 Spring Boot 项目中整合 …...
Elasticsearch倒排索引
什么是倒排索引 倒排索引(Inverted Index)是一种将文档中的每个单词映射到包含该单词的文档列表上的数据结构 倒排索引的构建过程 文档1: “我爱吃苹果” 文档2: “我爱吃香蕉” 文档3: “我喜欢苹果和香蕉” 文档分词:将文档中的文本内容…...
速盾:ddos常用防御方法是什么?
DDoS攻击是一种通过向网络资源发送大量请求或大流量数据来使其过载的攻击手段。为了应对这种攻击,常用的防御方法可以分为三个层次:流量清洗、服务器升级和高防CDN。 流量清洗是一种基础的防御手段,它通过过滤和识别恶意流量来阻止DDoS攻击。…...
二分算法入门(简单题)
习题1 704. 二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1: 输入: nums [-1,0,3,5,9,12], targ…...

大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...

Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...

七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

MFC 抛体运动模拟:常见问题解决与界面美化
在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...