python ndarray append_9-Python-NumPy数组元素的添加与删除

数组元素的添加与删除 相关函数列表如下:

函数

元素及描述

resize

返回指定形状的新数组

append

将值添加到数组末尾

insert

沿指定轴将值插入到指定下标之前

delete

删掉某个轴的子数组,并返回删除后的新数组

unique

查找数组内的唯一元素

1)

math?formula=%5Ccolor%7Bred%7D%7Bnumpy.resize%7D 返回指定大小的新数组

numpy.resize(arr, shape)

arr:要修改大小的数组

shape:返回数组的新形状

新数组小于原始数组

>>> import numpy as np

>>> a = np.array([[1,2,3],[4,5,6]])

>>> a

array([[1, 2, 3],

[4, 5, 6]])

>>> b = np.resize(a,(2,2))

>>> b

array([[1, 2],

[3, 4]])

新数组大于原始数组

>>> import numpy as np

>>> a = np.array([[1,2,3],[4,5,6]])

>>> a

array([[1, 2, 3],

[4, 5, 6]])

>>> c = np.resize(a,(3,3))

>>> c

array([[1, 2, 3],

[4, 5, 6],

[1, 2, 3]])

>>> d = np.resize(a,(3,4))

>>> d

array([[1, 2, 3, 4],

[5, 6, 1, 2],

[3, 4, 5, 6]])

总结:

如果新数组大小小于原始大小,会默认按行对原始数组进行取值,直到取够为止

如果新数组大小大于原始大小,会默认按行重复使用原始数组中的元素,会包含原始数组中的元素的副本。

2)

math?formula=%5Ccolor%7Bred%7D%7Bnumpy.append%7D 在数组的末尾添加值。 追加操作会分配整个数组,并把原来的数组复制到新数组中。 此外,输入数组的维度必须匹配否则将生成ValueError。

numpy.append(arr, values, axis=None)

arr:输入数组

values:要向arr添加的值,需要和arr形状相同(除了要添加的轴)

axis:默认为 None

当axis=None时,是横向加成,对添加的元素的个数和类型无要求,返回总是为一维数组

当axis=0时,增加的是原始数组的行数,因此添加的列表必须是二维[[]]。若要添加一行,子列表元素个数是1[[]],添加二行,子列表元素个数是2[[],[]]。子列表元素个数要与原始数组的列数相同。

当axis=1时,增加的是原始数组的列数,因此添加的列表元素个数要与原始数组的行数相同,增加的列数取决于子列表的元素个数

不定义axis,返回的都是一维数组

>>> import numpy as np

>>> a = np.array([[1,2,3],[4,5,6]])

>>> a

array([[1, 2, 3],

[4, 5, 6]])

>>> np.append(a, [7,8])

array([1, 2, 3, 4, 5, 6, 7, 8])

>>> np.append(a, [7,8,9])

array([1, 2, 3, 4, 5, 6, 7, 8, 9])

''' 尝试添加多维数组'''

>>> np.append(a, [[7,8],[9,]])

array([1, 2, 3, 4, 5, 6, list([7, 8]), list([9])], dtype=object)

定义axis=0

>>> import numpy as np

>>> a = np.array([[1,2,3],[4,5,6]])

>>> a

array([[1, 2, 3],

[4, 5, 6]])

'''沿轴 0 添加元素,即增加原始数组的行数'''

>>> np.append(a, [[7,8,9]],axis = 0)

array([[1, 2, 3],

[4, 5, 6],

[7, 8, 9]])

>>> np.append(a, [[7,8,9],[10,11,12]],axis = 0)

array([[ 1, 2, 3],

[ 4, 5, 6],

[ 7, 8, 9],

[10, 11, 12]])

定义axis=1

>>> import numpy as np

>>> a = np.array([[1,2,3],[4,5,6]])

>>> a

array([[1, 2, 3],

[4, 5, 6]])

'''沿轴 1 添加元素,即增加原始数组的列数'''

>>> np.append(a, [[7],[8]],axis = 1)

array([[1, 2, 3, 7],

[4, 5, 6, 8]])

>>> np.append(a, [[7,9],[8,10]],axis = 1)

array([[ 1, 2, 3, 7, 9],

[ 4, 5, 6, 8, 10]])

3)

math?formula=%5Ccolor%7Bred%7D%7Bnumpy.insert%7D 用法和 numpy.append类似,但没有append严格

numpy.insert(arr, obj, values, axis)

arr:输入数组

obj:在其之前插入值的索引

values:要插入的值

axis:沿着它插入的轴,如果未提供,则输入数组会被展开

不传递axis参数时,是横向加成,添加对象是单个元素或者是一维数组(列表),可以是一个元素,也可以是一个列表(包含1个以上元素),返回总是为一维数组

当axis=0时,添加对象可以是1个元素或者数组,当为数组时,添加的数组维度可以是(1,1)或者和原始数组相等,但不能大或者不等

当axis=1时,添加对象可以是1个元素或者数组,当为数组时,添加数组的维度可以是(1,1),或者必须原始数组列数相同,但不能大或者不等

numpy.insert添加的对象可以是一个元素或者数组

未传递 axis 参数,生成的是一维数组

>>> import numpy as np

>>> a = np.array([[1,2],[3,4],[5,6]])

>>> a

array([[1, 2],

[3, 4],

[5, 6]])

>>> np.insert(a,3,11)

array([ 1, 2, 3, 11, 4, 5, 6])

>>> np.insert(a,3,[11,12])

array([ 1, 2, 3, 11, 12, 4, 5, 6])

>>> np.insert(a,3,[11,12,13])

array([ 1, 2, 3, 11, 12, 13, 4, 5, 6])

定义axis=0

>>> np.insert(a,1,11,axis = 0)

array([[ 1, 2],

[11, 11],

[ 3, 4],

[ 5, 6]])

>>> np.insert(a,1,[11],axis = 0)

array([[ 1, 2],

[11, 11],

[ 3, 4],

[ 5, 6]])

>>> np.insert(a,1,[11,12],axis = 0)

array([[ 1, 2],

[11, 12],

[ 3, 4],

[ 5, 6]])

>>> np.insert(a,1,[[11,12],[13,14]],axis = 0)

array([[ 1, 2],

[11, 12],

[13, 14],

[ 3, 4],

[ 5, 6]])

>>> np.insert(a,1,[11,12,13],axis = 0)

Traceback (most recent call last):

ValueError: could not broadcast input array from shape (1,3) into shape (1,2)

定义axis=1

>>> np.insert(a,1,11,axis = 1)

array([[ 1, 11, 2],

[ 3, 11, 4],

[ 5, 11, 6]])

>>> np.insert(a,1,[11],axis = 1)

array([[ 1, 11, 2],

[ 3, 11, 4],

[ 5, 11, 6]])

>>> np.insert(a,1,[11,12],axis = 1)

Traceback (most recent call last):

ValueError: could not broadcast input array from shape (2,1) into shape (3,1)

>>> np.insert(a,1,[11,12,13],axis = 1)

array([[ 1, 11, 2],

[ 3, 12, 4],

[ 5, 13, 6]])

>>> np.insert(a,1,[[11],[12],[13]],axis = 1)

array([[ 1, 11, 12, 13, 2],

[ 3, 11, 12, 13, 4],

[ 5, 11, 12, 13, 6]])

>>> np.insert(a,1,[[11,12,13],[14,15,16],[17,18,19]],axis = 1)

array([[ 1, 11, 14, 17, 2],

[ 3, 12, 15, 18, 4],

[ 5, 13, 16, 19, 6]])

4)

math?formula=%5Ccolor%7Bred%7D%7Bnumpy.delete%7D 返回从输入数组中删除指定子数组的新数组。 与 insert() 函数的情况一样,如果未提供轴参数,则输入数组将展开。

Numpy.delete(arr, obj, axis)

arr:输入数组

obj:可以被切片,整数或者整数数组,表明要从输入数组删除的子数组

axis:沿着它删除给定子数组的轴,如果未提供,则输入数组会被展开

未传递 Axis 参数,生成一个一维数组

>>> import numpy as np

>>> a = np.arange(12).reshape(3,4)

>>> a

array([[ 0, 1, 2, 3],

[ 4, 5, 6, 7],

[ 8, 9, 10, 11]])

>>> np.delete(a,5)

array([ 0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11])

定义axis=0,对行进行操作

>>> import numpy as np

>>> a = np.arange(12).reshape(3,4)

>>> np.delete(a,5)

array([ 0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11])

>>> a

array([[ 0, 1, 2, 3],

[ 4, 5, 6, 7],

[ 8, 9, 10, 11]])

''' 删除第2行 '''

>>> np.delete(a,1,axis = 0)

array([[ 0, 1, 2, 3],

[ 8, 9, 10, 11]])

'''删除第2行和第3行'''

>>> np.delete(a,[1,2],axis = 0)

array([[0, 1, 2, 3]])

定义axis=1,对列进行操作

>>> import numpy as np

>>> a = np.arange(12).reshape(3,4)

>>> np.delete(a,5)

array([ 0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11])

>>> a

array([[ 0, 1, 2, 3],

[ 4, 5, 6, 7],

[ 8, 9, 10, 11]])

''' 删除第2列 '''

>>> np.delete(a,1,axis = 1)

array([[ 0, 2, 3],

[ 4, 6, 7],

[ 8, 10, 11]])

''' 删除第2列和第3列 '''

>>> np.delete(a,[1,2],axis = 1)

array([[ 0, 3],

[ 4, 7],

[ 8, 11]])

切片操作 必须使用 numpy.s_

>>> import numpy as np

>>> a = np.arange(12).reshape(3,4)

>>> a

array([[ 0, 1, 2, 3],

[ 4, 5, 6, 7],

[ 8, 9, 10, 11]])

>>> np.delete(a, np.s_[1:3])

array([ 0, 3, 4, 5, 6, 7, 8, 9, 10, 11])

''' 删除第2行和第3行 '''

>>> np.delete(a, np.s_[1:3],axis=0)

array([[0, 1, 2, 3]])

''' 删除第2列和第3列 '''

>>> np.delete(a, np.s_[1:3],axis=1)

array([[ 0, 3],

[ 4, 7],

[ 8, 11]])

''' 步长为2 进行删除,删除 index 为 0, 2, 4 ....的元素 '''

>>> np.delete(a, np.s_[::2])

array([ 1, 3, 5, 7, 9, 11])

>>> np.delete(a, np.s_[::2],axis=0)

array([[4, 5, 6, 7]])

>>> np.delete(a, np.s_[::2],axis=1)

array([[ 1, 3],

[ 5, 7],

[ 9, 11]])

5)

math?formula=%5Ccolor%7Bred%7D%7Bnumpy.unique%7D 用于去除数组中的重复元素

numpy.unique(arr, return_index, return_inverse, return_counts)

arr:输入数组,如果不是一维数组则会展开

return_index:如果为true,返回新列表元素在旧列表中的位置(下标),并以列表形式储

return_inverse:如果为true,返回旧列表元素在新列表中的位置(下标),并以列表形式储

return_counts:如果为true,返回去重数组中的元素在原数组中的出现次数

>>> import numpy as np

>>> a = np.array([5,2,6,2,7,5,6,8,2,9])

>>> a

array([5, 2, 6, 2, 7, 5, 6, 8, 2, 9])

>>> np.unique(a)

array([2, 5, 6, 7, 8, 9])

return_index = True

>>> import numpy as np

>>> a = np.array([5,2,6,2,7,5,6,8,2,9])

>>> a

array([5, 2, 6, 2, 7, 5, 6, 8, 2, 9])

>>> np.unique(a, return_index = True)

(array([2, 5, 6, 7, 8, 9]), array([1, 0, 2, 4, 7, 9]))

return_inverse = True

>>> import numpy as np

>>> a = np.array([5,2,6,2,7,5,6,8,2,9])

>>> a

array([5, 2, 6, 2, 7, 5, 6, 8, 2, 9])

>>> np.unique(a,return_inverse = True)

(array([2, 5, 6, 7, 8, 9]), array([1, 0, 2, 0, 3, 1, 2, 4, 0, 5]))

return_counts = True

>>> import numpy as np

>>> a = np.array([5,2,6,2,7,5,6,8,2,9])

>>> a

array([5, 2, 6, 2, 7, 5, 6, 8, 2, 9])

>>> np.unique(a,return_counts = True)

(array([2, 5, 6, 7, 8, 9]), array([3, 2, 2, 1, 1, 1]))

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

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

相关文章

Java -jar 如何在后台运行项目

演示项目: GitHub链接:https://github.com/gb-heima/java-jar-nohup zip下载链接:https://github.com/gb-heima/java-jar-nohup/archive/master.zip git下载地址: git clone gitgithub.com:gb-heima/java-jar-nohup.git编译打包 …

裁员1700人,IBM 声称内部调整团队;谷歌将以26亿美元全现金收购Looker,绝对大手笔...

关注并标星星CSDN云计算极客头条:速递、最新、绝对有料。这里有企业新动、这里有业界要闻,打起十二分精神,紧跟fashion你可以的!每周三次,打卡即read更快、更全了解泛云圈精彩newsgo go go 贝索斯旗下蓝色起源将登月球…

修改Tomcat默认的端口

文章目录1. 进入/app/tomcat8081/conf,编辑server.xml文件2. 修改3个端口2.1. 第一个:停止端口,默认8005,修改为80062.2. 第二个:修改http访问端口,默认8080修改为80812.3. 第三个:修改APJ端口&…

Lambda 表达式有何用处?

戳蓝字“CSDN云计算”关注我们哦!我们知道,对于一个Java变量,我们可以赋给其一个“值”。如果你想把“一块代码”赋给一个Java变量,应该怎么做呢?比如,我想把右边那块代码,赋给一个叫做aBlockOf…

Java Web项目_order下载、运行

项目简介: order为GitHub开源项目,作为java web测试的参考项目,可以快速编译打包运行,UI设计采用bootstrap页面美观! 文章目录一、 order项目下载1.1. 项目链接:1.2. zip包下载链接:1.3. GitHub…

纯粹,极致!他用两个词阐释了UCloud

“我觉得有一个词是肯定的:纯粹,另一个词可能是极致。但这个词我有些犹豫,因为我们做的还不够好。”UCloud技术副总裁杨镭在UCloud用户大会期间接受老孙独家采访时这样形容UCloud。 UCloud技术副总裁杨镭关于UCloud:一家简单、纯粹…

java gc堆中的分区_jvm内存各个区域详解

内存区域划分Java虚拟机所管理的内存区域分为如下部分:方法区、GC堆、虚拟机栈、本地方法栈、PC程序计数器。其中方法区、GC堆是所有线程共享的;虚拟机栈、本地方法栈、PC程序计数器是各个线程独占的。image.pngPC程序计数器程序计数器可以看做是当前线程…

157 亿美元 !Salesforce 收购 Tableau !微软发布警告,表明黑客利用Office漏洞发动垃圾邮件攻击……...

关注并标星星CSDN云计算极客头条:速递、最新、绝对有料。这里有企业新动、这里有业界要闻,打起十二分精神,紧跟fashion你可以的!每周三次,打卡即read更快、更全了解泛云圈精彩newsgo go go 荣耀在成都的全球首家Life概…

Git 远程配置_03

文章目录1. 生成SSH key 认证证书2. 查看公钥3. 拷贝公钥的内容,并设置到github中远程配置就是怎样和远程仓库建立连接? 1. 在本地生成公钥和私钥(认证证书) 2. 把本地生成的公钥复制到远程仓库的ssh key中保存1. 生成SSH key 认证证书 ssh-keygen -t rsa -C &qu…

Jenkins修改管理员密码

Jenkins的加密方式 Jenkins 的密码采用的是Java加解密工具 jBCrypt,我也是第一次接触到这种加密方式,实在被他惊叹到了!这种加密方式每次加密同一个明文竟然都是得到不一样的结果,那他又是通过怎样的方式来解密的呢?原…

Storm精华问答 | 如何理解spout/bolt的生命周期?

戳蓝字“CSDN云计算”关注我们哦!Storm是Twitter开源的分布式实时大数据处理框架,被业界称为实时版Hadoop。随着越来越多的场景对Hadoop的MapReduce高延迟无法容忍,比如网站统计、推荐系统、预警系统、金融系统等, 大数据实时处理…

刚刚!6月榜单:JS跌惨,Python又霸榜,C++再无翻身可能!

Python勇者无敌!最近一份PYPL 6月报告了来了,通过半年的发展,Python基本已奠定2019年-2020的地位,持续称王就对了!PLPY 6月榜单,JS跌惨只见Python笑,哪闻C哭PYPL 发布 6 月编程语言指数榜啦。毫…

java vector 输出_5.7(java学习笔记)Vector、Enumeration

一.VectorVector类实现一个可扩展的数组对象。与数组一样,它包含可以使用整数索引访问。它的基本操作方法add(int index, E element),get(int index),indexOf(Object o)等操作方法与数组中的方法类似这里就不叙述了。我们主要看一个方法&…

企业实战案例01_Jenkins_连接远程执行shell脚本

文章目录一、Jenkins 远程连接执行shell脚本1.1. 新建节点1.2. 配置节点信息二、连接远程验证测试2.1. 创建任务2.2. 添加注释2.3. 设置最大构建数量2.4. 限制项目的运行节点2.5. 选择构建环境2.6. 填写获取Tomact目录列表脚本2.7. 立即构建项目2.8. 查看控制台日志监控一、Jen…

纯粹,极致!他用两个词阐释了UCloud | 人物志

戳蓝字“CSDN云计算”关注我们哦!“我觉得有一个词是肯定的:纯粹,另一个词可能是极致。但这个词我有些犹豫,因为我们做的还不够好。”UCloud技术副总裁杨镭在UCloud用户大会期间接受老孙独家采访时这样形容UCloud。UCloud技术副总…

企业实战案例02_Jenkins_连接远程GitLab拉取代码

编译、打包 文章目录一、任务新建和配置信息1. 新建任务2. 添加描述3. 设置构建的最大数量4. 添加Git构建参数5.复制远程项目链接地址6. 粘贴远程项目地址7. 添加凭据7. 要编译的分支8. 效果图9. 编译和打包项目二、构建项目和日志监听1. 查看工作区(构建项目前&…

java责任链模式审批请假_Java使用责任链模式处理学生请假问题详解

本文实例讲述了Java使用责任链模式处理学生请假问题。分享给大家供大家参考,具体如下:一. 模式定义在责任链模式中,很多对象由每一个对象对其下家的引用而连接起来,形成一条链。客户端应用请求在这个链上进行传递,直到…

联想成立数据智能事业部,前京东蓝烨回归;华为或已向多国知识产权组织提交「鸿蒙」商标申请……...

关注并标星星CSDN云计算极客头条:速递、最新、绝对有料。这里有企业新动、这里有业界要闻,打起十二分精神,紧跟fashion你可以的!每周三次,打卡即read更快、更全了解泛云圈精彩newsgo go go 混合动力电动飞机Ampaire 33…

java铃声类_java多线程抓取铃声多多官网的铃声数据

一直想练习下java多线程抓取数据。有天被我发现,铃声多多的官网(http://www.shoujiduoduo.com/main/)有大量的数据。通过观察他们前端获取铃声数据的ajaxhttp://www.shoujiduoduo.com/ringweb/ringweb.php?typegetlist&listid{类别ID}&page{分页页码}很容易…

Spark精华问答 | RDD的核心概念是什么?

Hadoop再火,火得过Spark吗?今天我们继续关于Spark的精华问答吧。1Q:RDD的核心概念是什么?A:Client:客户端进程,负责提交作业到Master。Master:Standalone模式中主控节点,负责接收Cli…