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

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...