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…...
物理引导的机器学习工作流:气候建模的融合创新与实践
1. 项目概述:当气候建模遇见机器学习如果你像我一样,在气候模拟这个领域摸爬滚打超过十年,就会深刻体会到一种“甜蜜的负担”:我们构建的地球系统模型(ESM)越来越精细,物理过程越来越复杂&#…...
SwitchyOmega+Burp无感抓包实战:解决HTTPS拦截与流量路由难题
1. 为什么“无感抓包”是BurpSuite日常使用的分水岭刚接触Web安全测试的朋友常有个错觉:装上Burp Suite,配好代理,打开浏览器,点几下网页——流量就该自动进来了。结果现实是:首页打不开、登录态丢失、HTTPS报错满屏、…...
2026 西安 AI 问答曝光搭建技术解析:GEO 知识图谱 + 深度测评
随着大语言模型技术的快速普及,AI 搜索已经成为用户获取企业信息、商家服务的核心入口。根据中国互联网信息中心 2026 年发布的《中国人工智能搜索发展报告》显示,2025 年国内 AI 搜索用户规模突破 8.2 亿,日均搜索请求超过 20 亿次ÿ…...
PDF 可视化签名盖章页技术解析
本文是我在设备检测系统项目开发中,无设备检测的技术实现备忘录,记载实现过程。 本文以 PC 端页面 sign-pdf.vue 为主线,说明「无设备报检」在报告审批环节如何通过前后端协作,完成报告/记录 PDF 上的签名、印章、报告编号拖放定位,并在审批通过后由后端合并生成带签章的正…...
智能体所有权与版权:AI Agent Harness Engineering 创造的作品归谁所有?
1. 标题选项 《AI Agent创作版权迷局破解:从Harness工程原理到所有权划分的完整指南》 《智能体作品归谁?AI Agent Harness Engineering场景下的版权规则深度拆解》 《告别权属纠纷:一文搞懂AI Agent生成内容的所有权、版权与收益分配规则》 《Harness工程视角下的AI创作权:…...
Burp Suite证书安装全解:HTTPS抓包失败的根源与跨平台命令行方案
1. 为什么必须亲手安装Burp Suite证书——不是“点一下就完事”的操作很多人第一次在手机或测试设备上配置Burp Suite代理时,会下意识认为:只要把电脑上的Burp监听地址填进Wi-Fi代理设置,再用浏览器访问http://burp,点击那个绿色的…...
WarcraftHelper终极指南:魔兽争霸3兼容性问题一站式解决方案
WarcraftHelper终极指南:魔兽争霸3兼容性问题一站式解决方案 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为《魔兽争霸3》在现代电…...
别再手动编译了!Matlab一键调用CEC2017测试函数的完整配置指南(附30个函数调用示例)
别再手动编译了!Matlab一键调用CEC2017测试函数的完整配置指南(附30个函数调用示例) 算法研究者们常常需要借助标准测试函数来验证优化算法的性能,而CEC2017测试函数集因其复杂性和多维度的挑战性,成为评估算法鲁棒性的…...
DeepSeek安全测试辅助Prompt工程白皮书(含17个CVE靶场验证指令模板)
更多请点击: https://intelliparadigm.com 第一章:DeepSeek安全测试辅助 DeepSeek系列大模型在代码生成、漏洞模式识别与安全上下文理解方面展现出独特优势,可作为安全测试工程师的智能协作者。其对OWASP Top 10、CWE分类体系及常见PoC结构具…...
告别Windows卡顿!在VMware里给Kubuntu 22.04 LTS分区和安装的保姆级避坑指南
告别Windows卡顿!在VMware里给Kubuntu 22.04 LTS分区和安装的保姆级避坑指南你是否已经厌倦了Windows系统越来越慢的启动速度、频繁的后台更新和资源占用?当你的电脑开始频繁卡顿,或许该考虑给系统来一次"减负"了。Kubuntu 22.04 L…...
