当前位置: 首页 > news >正文

Numpy 数组元素添加与元素删除函数详解

元素添加

Numpy中有类似python列表操作函数append()及insert(),但是用法稍有不同,append()及insert()不作为数组的实例方法使用。

np.append()

np.append()的参数如下

def append(arr, values, axis=None):

其中,arr为数组对象,values为要插入的值或子数组,axis为0则沿行方向添加元素,为1则沿列方向添加元素,但都是将元素加至末尾

插入一维数组
import numpy as npdata1 = np.random.randint(0,10,5)
print(data1)data1 = np.append(data1, 100)print(data1)
# 
# [1 0 3 1 7]
# [  1   0   3   1   7 100]
插入二维数组

插入二维数组就会涉及到插入的方式,也就是沿行添加还是沿列添加,并且要保证数组每个维度的长度相等,而且如果指定插入的轴,则会将数组扁平化处理,也就是降维至一维数组,并且插入的数组维度要与原数组相同

不指定插入的轴
import numpy as npdata1 = np.random.randint(0,10,(3,4))
print(data1)
data2 = np.append(data1,[[1,1,1,1]])
print(data2)# [[6 1 3 4]
#  [7 6 2 6]
#  [6 5 7 4]]
# [6 1 3 4 7 6 2 6 6 5 7 4 1 1 1 1]

可以看到数组做了扁平化处理,然后将元素添加到了末尾的位置 

沿行插入
import numpy as npdata1 = np.random.randint(0,10,(3,4))
print(data1)
data2 = np.append(data1,[[1,1,1,1]], axis=0)
print(data2)# [[9 2 7 3]
#  [6 4 1 8]
#  [6 2 1 1]]
# [[9 2 7 3]
#  [6 4 1 8]
#  [6 2 1 1]
#  [1 1 1 1]]
沿列插入
import numpy as npdata1 = np.random.randint(0,10,(3,4))
print(data1)
data2 = np.append(data1,np.ones((3,1)), axis=1)
print(data2)# [[9 4 1 6]
#  [6 7 1 0]
#  [0 2 5 6]]
# [[9. 4. 1. 6. 1.]
#  [6. 7. 1. 0. 1.]
#  [0. 2. 5. 6. 1.]]

 注意这里的维度要保持一致,也就是形状要为(3,1)

insert()

insert()函数的作用为指定索引位置插入元素或子数组,参数如下

def insert(arr, obj, values, axis=None):

可以看到arr为数组对象,obj为索引位置,values为要插入的元素或子数组,axis为插入的轴

同样这里要保准数组维度,并且不指定axis会导致数组扁平化

插入一维数组
import numpy as npdata1 = np.random.randint(0,10,5)
print(data1)data2 = np.insert(data1,2,100)
print(data2)
# [8 0 6 5 1]
# [  8   0 100   6   5   1]
插入二维数组
不指定插入的轴
import numpy as npdata1 = np.random.randint(0,10,(2,3))
print(data1)data2 = np.insert(data1,2,[1,2,3])
# [[7 3 9]
#  [3 1 3]]
# [7 3 1 2 3 9 3 1 3]

可以看到这里直接将数组扁平化后,将要插入的子数组按元素插入了指定的索引位置

沿行插入
import numpy as npdata1 = np.random.randint(0,10,(2,3))
print(data1)data2 = np.insert(data1,2,[[1,2,3]],axis=0)
print(data2)
# [[1 3 3]
#  [2 3 0]]
# [[1 3 3]
#  [2 3 0]
#  [1 2 3]]
沿列插入
import numpy as npdata1 = np.random.randint(0,10,(2,3))
print(data1)data2 = np.insert(data1,2,np.ones((2,1)),axis=1)
print(data2)
# [[5 9 5]
#  [6 0 3]]
# [[5 9 1 1 5]
#  [6 0 1 1 3]]
补充:insert()函数的广播机制

insert函数在进行二维数组的插入时,不同于append()函数需要插入数组的维度要与被插入的数组一致,insert()函数可以将插入数组进行广播,从而匹配形状

import numpy as npdata1 = np.random.randint(0,10,(2,3))
print(data1)data2 = np.insert(data1,2,1,axis=1)
data3 = np.insert(data1,2,[1,1,1],axis=0)
print(data2)
print(data3)
# [[2 8 7]
#  [5 8 9]]
# [[2 8 1 7]
#  [5 8 1 9]]
# [[2 8 7]
#  [5 8 9]
#  [1 1 1]]

这里分别使用常量1和一维数组作为插入对象进行了广播尝试

元素删除

np.delete()

元素删除这里使用np.delete()函数,函数参数如下

def delete(arr, obj, axis=None):

arr为要进行删除的数组对象,obj为要删除的元素对应的下标,axis为要进行删除的轴

同样,若不指定axis,则会对数组进行扁平化处理

对一维数组进行删除
import numpy as npdata1 = np.random.randint(0,10,5)
print(data1)data2 = np.delete(data1,2)
print(data2)
# 
# [1 1 4 3 6]
# [1 1 3 6]
对二维数组进行阐述
不指定轴
import numpy as npdata1 = np.random.randint(0,10,(2,3))
print(data1)data2 = np.delete(data1,2)
print(data2)
# [[5 4 6]
#  [0 3 7]]
# [5 4 0 3 7]

可以看到数组扁平化后删除了索引为2的值

删除指定行
import numpy as npdata1 = np.random.randint(0,10,(3,4))
print(data1)data2 = np.delete(data1,2,axis=0)
print(data2)
# [[8 5 7 2]
#  [9 0 7 1]
#  [6 2 9 0]]
# [[8 5 7 2]
#  [9 0 7 1]]
删除指定列
import numpy as npdata1 = np.random.randint(0,10,(3,4))
print(data1)data2 = np.delete(data1,2,axis=1)
print(data2)
# [[3 5 0 2]
#  [0 0 0 2]
#  [4 2 8 6]]
# [[3 5 2]
#  [0 0 2]
#  [4 2 6]]

相关文章:

Numpy 数组元素添加与元素删除函数详解

元素添加 Numpy中有类似python列表操作函数append()及insert(),但是用法稍有不同,append()及insert()不作为数组的实例方法使用。 np.append() np.append()的参数如下 def append(arr, values, axisNone): 其中,arr为数组对象&#xff0…...

【Python】高效图像处理库:pyvips

月亮慢慢变圆,日子慢慢变甜。 在图像处理领域,pyvips 是一个轻量级且高效的库,适合处理大规模图像、实现高性能的操作。相较于其他常见的图像处理库如 PIL 或 OpenCV,pyvips 以其低内存占用和出色的速度脱颖而出。本文将介绍 pyv…...

java项目之在线考试与学习交流网页平台源码(springboot)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的在线考试与学习交流网页平台。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 基于JAVA语言…...

【Android源码】屏蔽系统通知出现在系统栏中

环境 aosp: android-14.0.0_r1 真机&#xff1a;Pixel5 目标 我想把usb连接的两个系统通知屏蔽掉 “正在通过 USB 为此设备充电”“已连接到 USB 调试” 步骤 首先找到这两句内容出现的位置在 frameworks/base/core/res/res/values-zh-rCN/strings.xml <string name&…...

MySQL索引测试

在MySQL中&#xff0c;即使表中没有数据&#xff0c;查询优化器也会考虑使用索引来执行查询。但在某些情况下&#xff0c;查询优化器可能会选择不使用索引&#xff0c;这通常是基于成本效益分析的结果。 表中没有任何数据时&#xff0c;无论是否使用索引&#xff0c;查询结果都…...

【软件设计】常用设计模式--观察者模式

软件设计模式&#xff08;四&#xff09; 观察者模式一、观察者模式&#xff08;Observer Pattern&#xff09;1. 概念2. 模式结构3. UML 类图4. 实现方式C# 示例步骤1&#xff1a;定义观察者接口步骤2&#xff1a;定义主题接口步骤3&#xff1a;实现具体主题步骤4&#xff1a;…...

东北非国企就职体验

有感而发&#xff0c;校招毕业选了个非央国企但偏稳的工作&#xff0c;属于事儿少离家近钱还可以。不忙&#xff0c;收入在东北也还不错&#xff0c;可是看到近期那些考上公务员那些有编制的pyq&#xff0c;真的是很感叹他们的生活真的是丰富多彩。 虽然我不忙&#xff0c;但是…...

经典sql题(二)求连续登录最多天数用户

示例数据 假设我们的 test 表有以下数据&#xff1a; iddate12023-10-01 08:00:0012023-10-02 09:00:0012023-10-03 10:00:0012023-10-05 11:00:0022023-10-01 10:00:0022023-10-02 12:00:0022023-10-03 14:00:0022023-10-04 15:00:0032023-10-01 16:00:0032023-10-02 16:00:…...

A. Closest Point

time limit per test 2 seconds memory limit per test 512 megabytes Consider a set of points on a line. The distance between two points ii and jj is |i−j||i−j|. The point ii from the set is the closest to the point jj from the set, if there is no othe…...

沟通更高效:微信群转移至企业微信操作攻略!

微信群转移到企业微信并不难&#xff0c;具体操作如下&#xff1a; 打开移动端企业微信主页&#xff0c;找到微信聊天栏中的【接收微信中的工作消息】&#xff1b; 点击【前往微信选择群聊】&#xff0c; 跳转到微信&#xff1b; 选择微信上的工作群聊&#xff0c;只能选择作…...

计算机毕业设计 基于Python Django的旅游景点数据分析与推荐系统 Python+Django+Vue 前后端分离 附源码 讲解 文档

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…...

关于安卓App自动化测试的一些想法

安卓App自动化一般使用PythonAppium。页面元素通常是使用AndroidStudio中的UI Automator Viewer工具来进行页面元素的追踪。但是这里涉及到一个问题就是&#xff0c;安卓apk在每次打包的时候&#xff0c;会进行页面的混淆以及加固&#xff0c;所以导致每次apk打包之后会出现页面…...

Bigemap GIS Office 2024注册机 全能版地图下载软件

对于需要利用GIS信息进行编辑、设计的用户来说&#xff0c;Bigemap GIS Office占有重要地位。用户可以使用Bigemap GIS Office作为工具进行设计、分析、共享、管理和发布地理信息。Bigemap GIS Office能实现多种数据流转、嵌入、融合以及更多地为用户提供数据的增强处理及多种分…...

秦时明月6.2魔改版+GM工具+虚拟机一键端

今天给大家带来一款单机游戏的架设&#xff1a;秦时明月。 另外&#xff1a;本人承接各种游戏架设&#xff08;单机联网&#xff09; 本人为了学习和研究软件内含的设计思想和原理&#xff0c;带了架设教程仅供娱乐。 教程是本人亲自搭建成功的&#xff0c;绝对是完整可运行…...

firewalld实现NAT端口转发

1、准备工作 # 开启 NAT 转发 firewall-cmd --permanent --zonepublic --add-masquerade # 开放 DNS 使用的 80 端口&#xff0c;tcp# 必须&#xff0c;否则其它机器无法进行域名解析 firewall-cmd --zonepublic --add-port80/tcp --permanent # 检查是否允许 NAT 转发 f…...

中国电子学会202309青少年软件编程(Python)等级考试试卷(二级)真题

青少年软件编程(Python)等级考试试卷(二级) 分数:100 题数:37 一、单选题(共25题,每题2分,共50分) 1、 yyh = [2023, 杭州亚运会, [拱宸桥, 玉琮莲叶]] jxw = yyh[2][0] print(jxw[1] * 2)以上代码运行结果是?( ) A. 宸宸 B. 杭杭 C. 玉玉 D. 州州 2、阿宝…...

第四天旅游线路预览——从贾登峪到喀纳斯景区入口(贾登峪游客服务中心)

第四天&#xff1a;从贾登峪到喀纳斯风景区入口&#xff0c;晚上住宿贾登峪&#xff1b; 从贾登峪到喀纳斯景区入口&#xff08;贾登峪游客服务中心&#xff09;&#xff1a; 搭乘贾登峪①路车&#xff0c;路过三湾到达景区换乘中心&#xff0c;路程时长约40分钟&#xff1b; …...

个人常用命令

文章目录 linux命令基本命令screen docker命令 linux命令 基本命令 查看文件大小&#xff1a;sudo du -sh /文件路径 查看当前目录下所有文件夹大小&#xff0c;不进行递归&#xff1a;sudo du -h --max-depth1 远程复制文件:rsync -avz -e ssh -p 端口号 ip地址:/远程文件地…...

如何根据协议请求去捕捉在个文件中发出去的

场景&#xff1a;随着业务越来越复杂&#xff0c;一个“触发”可能发出去N个协议&#xff0c;此时有某一个协议发生了报错&#xff0c;需要去找这个协议&#xff0c;去文件中走读逻辑&#xff0c;去找该协议&#xff0c;效率很慢&#xff0c;业务极其复杂的情况下&#xff0c;很…...

Lombok -----此java库 常用的注解及其功能总结

总结 Lombok 是一个 Java 库&#xff0c;它可以帮助开发者减少在 Java 中编写那些繁琐的“boilerplate”代码的工作量&#xff0c;比如 getter 方法、setter 方法、构造函数、toString 方法等。 通过简单的注解&#xff0c;Lombok 能够自动为你的类生成这些方法&#xf…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

大数据学习栈记——Neo4j的安装与使用

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

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...