广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python中数组切片的用法详解
  • 172
分享到

Python中数组切片的用法详解

pythonnumpy开发语言 2023-09-18 14:09:24 172人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

python中数组切片的用法详解 一、python中“::-1”代表什么?二、python中“:”的用法三、python中数组切片三、numpy中的整数数组索引四、numpy中借助【切片 :

python数组切片的用法详解

一、Python中“::-1”代表什么?

在Python中::-1表示将字符或数字倒序输出(也称【反转】)。

举个栗子,当line = "abcde"时,使用语句line[::-1],最后的运行结果为:‘edcba’。

二、python中“:”的用法

在Python中a[i:j]表示复制字符串或数字从a[i]到a[j-1](也称【切片】)。 当切片中,ij 的位置被“:”替换时,切片结果如下:

  • i缺省时,默认为i=0,即 a[:3]相当于 a[0:3];
  • j缺省时,默认为j=len(a), 即a[1:]相当于a[1:10];
  • i,j都缺省时,a[::]就相当于完整复制一份a。

备注:上例中,假设 a = [0,1,2,3,4,5,6,7,8,9]。

参考链接:python中::-1代表什么?

三、python中数组切片

1、NumPy 数组正切片的规则:

python 中【切片】的意思是将元素从一个给定的索引带到另一个给定的索引。

  • 我们像这样传递切片而不是索引:[start:end]
  • 我们还可以定义步长,如下所示:[start:end:step]

备注:

  • 如果我们不传递 start,则将其视为 0。
  • 如果我们不传递 end,则视为该维度内数组的长度。
  • 如果我们不传递 step,则视为 1。

numpy中一维数组切片:

a=np.array([1,2,3,4,5])print(a)>>>array([1, 2, 3, 4, 5])# 切片print(a[0])#查询>>>1print(a[1:3])#切片>>>[2 3]

numpy中二维数组切片:

a = np.array([    [1,2,3,4],    [5,6,7,8],    [9,10,11,12]])print(a[0,3])#第一行,第四列>>>4print(a[:,3])#第四列>>>[ 4  8 12]print(a[0,:])#第一行>>>[1 2 3 4]"""对数组使用均值函数mean()"""print(a.mean(axis=1))#计算同一列下,每一行各数字的平均值>>>[ 2.5  6.5 10.5]print(a.mean(axis=0))#计算同一行下,每一列各数字的平均值>>>[5. 6. 7. 8.]import numpy as nparr = np.array([1, 2, 3, 4, 5, 6, 7])print(arr[1:5]) # 裁切索引 1 到索引 5(不包括)的元素>>>[2 3 4 5]print(arr[4:]) # 裁切数组中索引 4 到结尾的>>>[5 6 7]print(arr[:4]) # 裁切从开头到索引 4(不包括)的元素>>>[1 2 3 4]

2、NumPy 数组的负切片的规则:

  • 使用减号运算符从末尾开始引用索引:[-start:-end]
import numpy as nparr = np.array([1, 2, 3, 4, 5, 6, 7])# 从末尾开始的索引 3 到末尾开始的索引 1,对数组进行切片:print(arr[-3:-1])>>>[5 6]

3、NumPy 数组的使用【STEP步长】切片的规则:

  • 使用 step 值确定切片的步长:[start: end: step]
import numpy as nparr = np.array([1, 2, 3, 4, 5, 6, 7])print(arr[1:5:2]) # 从索引 1 到索引 5,返回相隔的元素>>>[2 4]print(arr[::2])# 返回数组中相隔的元素>>>[1 3 5 7]

3、NumPy 数组中 2-D 数组的切片规则:

  • 从第二个元素开始,对从索引 1 到索引 4(不包括)的元素进行切片。 结果的示例如下:
import numpy as nparr = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]])print(arr[1, 1:4]) # 从第二个元素开始,对从索引 1 到索引 4(不包括)的元素进行切片>>>[7 8 9]

NumPy 比一般的 Python 序列提供更多的索引方式。除了之前看到的用整数和切片的索引外,数组可以由整数数组索引布尔索引花式索引

三、numpy中的整数数组索引

numpy中的整数数组索引的切片规则:

以下实例获取数组中(0,0),(1,1)和(2,0)位置处的元素。
在这里插入图片描述

import numpy as npx = np.array([[1,2],[3,4],[5,5]])y = x[[0,1,2],[0,1,0]]print(y)>>>[1 4 5]

在这里插入图片描述

x = np.array([[0,1,2],[3,4,5],[6,7,8],[9,10,11]])x>>>array([[ 0,  1,  2],       [ 3,  4,  5],       [ 6,  7,  8],       [ 9, 10, 11]])# 切片模式一:输出结果写入单列表rows = np.array([0,3,0,3])cols = np.array([0,0,2,2])y = x[rows,cols]print(y)>>>[ 0  9  2 11]# 切片模式二:输出结果写入二维数组rows = np.array([[0,0],[3,3]])cols = np.array([[0,2],[0,2]])y = x[rows,cols]print(y)>>>[[ 0  2] [ 9 11]]# 切片模式二:输出结果写入2*3的数组rows = np.array([[0,0,1],[3,2,3]])cols = np.array([[0,2,1],[0,1,2]])y = x[rows,cols]print(y)>>>array([[0, 2, 1],       [0, 1, 2]])

四、numpy中借助【切片 : 或 …与索引数组】组合进行复杂切片

借助切片 : 或 … 与索引数组组合。如下面实例:

a = np.array([[1,2,3],[4,5,6],[7,8,9]])a>>>array([[1, 2, 3],       [4, 5, 6],       [7, 8, 9]])b = a[1:3,1:3]b>>>array([[5, 6],       [8, 9]])c = a[1:3,[1,2]]c>>>array([[5, 6],       [8, 9]])d = a[...,1:]   #  arr[..., 1] 等价于 arr[:, :, 1]d>>>array([[2, 3],       [5, 6],       [8, 9]])

五、布尔索引

我们可以通过一个布尔数组来索引目标数组。
布尔索引通过布尔运算(如:比较运算符)来获取符合指定条件的元素的数组

一、以下实例获取大于 5 的元素:import numpy as npx = np.array([[ 0, 1, 2],[ 3, 4, 5],[ 6, 7, 8],[ 9, 10, 11]])print (x)>>> [[ 0 1 2] [ 3 4 5] [ 6 7 8] [ 9 10 11]]print (x[x > 5]) # 现在我们会打印出大于 5 的元素>>>[ 6 7 8 9 10 11]二、以下实例使用了 ~(取补运算符)来过滤 NaN。import numpy as npa = np.array([np.nan, 1,2,np.nan,3,4,5]) print (a[~np.isnan(a)])>>> [ 1. 2. 3. 4. 5.]三、以下实例演示如何从数组中过滤掉非复数元素。import numpy as npa = np.array([1, 2+6j, 5, 3.5+5j]) print (a[np.iscomplex(a)])>>> [2.0+6.j 3.5+5.j]

六、花式索引

花式索引指的是利用整数数组进行索引。

花式索引根据索引数组的值作为目标数组的某个轴的下标来取值。

  1. 对于使用一维整型数组作为索引,如果目标是一维数组,那么索引的结果就是对应位置的元素;
  2. 如果目标是二维数组,那么就是对应下标的行。
import numpy as npx=np.arange(32).reshape((8,4))print (x[[4,2,1,7]]) # 传入顺序索引数组>>> [[16 17 18 19] [ 8 9 10 11] [ 4 5 6 7] [28 29 30 31]]print (x[[-4,-2,-1,-7]]) # 传入倒序索引数组>>> [[16 17 18 19] [24 25 26 27] [28 29 30 31] [ 4 5 6 7]]print (x[np.ix_([1,5,7,2],[0,3,1,2])]) # 传入多个索引数组(要使用np.ix_)>>> [[ 4 7 5 6] [20 23 21 22] [28 31 29 30] [ 8 11 9 10]]

原理:

np.ix_函数就是输入两个数组,产生笛卡尔积的映射关系

举个例子:
将输入数组[1,5,7,2]和数组[0,3,1,2]产生笛卡尔积,就是得到(1,0),(1,3),(1,1),(1,2);(5,0),(5,3),(5,1),(5,2);(7,0),(7,3),(7,1),(7,2);(2,0),(2,3),(2,1),(2,2);
就是按照坐标(1,0),(1,3),(1,1),(1,2)取得 x所对应的元素4,7,5,6,(5,0),(5,3),(5,1),(5,2)取得 x 所对应的元素20,23,21,22…以此类推。

import numpy as np x=np.arange(32).reshape((8,4))print (x[np.ix_([1,5,7,2],[0,3,1,2])])>>>[[ 4  7  5  6] [20 23 21 22] [28 31 29 30] [ 8 11  9 10]]

来源地址:https://blog.csdn.net/weixin_42782150/article/details/127014616

--结束END--

本文标题: Python中数组切片的用法详解

本文链接: https://www.lsjlt.com/news/411858.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python中数组切片的用法详解
    Python中数组切片的用法详解 一、python中“::-1”代表什么?二、python中“:”的用法三、python中数组切片三、numpy中的整数数组索引四、numpy中借助【切片 : ...
    99+
    2023-09-18
    python numpy 开发语言
  • 详解Go语言中数组,切片和映射的使用
    目录1.Arrays (数组)2.切片2.1 make创建切片3.映射MapArrays (数组), Slices (切片) 和 Maps (映射) 是常见的一类数据结构 1.Arr...
    99+
    2022-11-13
  • Python 数组的切片操作
     高级特性 切片操作:对list,tuple元素进行截取操作,非常简便。 L[0:3],L[:3] 截取前3个元素。 L[1:3] 从1开始截取2个元素出来。 L[-1] 取倒数第一个元素出来。 L[-10] 取后10个数 L[10:...
    99+
    2023-01-31
    数组 切片 操作
  • Python中字符串切片详解
    目录1.没有步长的简单切片2.有步长的切片方式在python中,我们定义好一个字符串,如下所示。 在python中定义个字符串然后把它赋值给一个变量。我们可以通过下标访问单个的字符...
    99+
    2022-11-12
  • GO语言的数组array与切片slice详解
    GO语言数组(array) 在GO语言中,数组是用于存储相同数据类型的集合,数组长度必须是一个常量表达式,且是一个非负数GO语言中的数组是一种值类型,下文会介绍 GO语言数组定义的格...
    99+
    2022-12-19
    GO语言的数组array GO语言切片slice GO语言数组定义赋值 GO语言多维数组 GO语言创建切片 GO语言复制与追加切片
  • Go语言数组和切片的区别详解
    目录数组声明以及初始化函数参数切片声明以及初始化函数参数总结参考文章:在 Go 语言中,数组和切片看起来很像,但其实它们又有很多的不同之处,这篇文章就来说说它们到底有哪些不同。 另外...
    99+
    2023-05-14
    Go 数组和切片
  • python数组切片分段的方法是什么
    在Python中,可以使用切片(Slice)来对数组进行分段。切片的语法是:`array[start:end:step]`。- `s...
    99+
    2023-10-12
    python
  • golang之数组切片的具体用法
    目录数组切片切片的创建直接声明new方式初始化字面量make方式截取方式s[:]s[i:]s[:j]s[i:j]s[i:j:x]看个例子切片的扩容内存对齐空切片和nil切片数组是值传...
    99+
    2022-11-13
  • python中ndarray数组的索引和切片的使用
    索引和切片相当于是对数组中内容的读(read)或者查询(inquiry)。是我们获取有用信息(demanded infomation)的重要方法。 对于索引 对于1维数组:在数组名的...
    99+
    2022-11-11
  • 详解Python中的切片(一看就懂版)
    前言 在我们使用Python的时候,经常会听到“切片”这个词!那什么是切片呢?切片是对序列数据(列表、元组、字符串),根据下标索引,对一定范围内数据的获取。 简单来说就是,通过下标索引获取一定范围内的...
    99+
    2023-08-31
    python numpy 开发语言
  • Go中的nil切片和空切片区别详解
    Go语言在声明变量的时候,会自动对变量对应的内存区域进行初始化操作。每个变量会被初始化成其类型的默认值,例如: 整型和浮点型变量的默认值为0。 字符串变量的默认值为空字符串。 ...
    99+
    2022-06-07
    nil GO
  • Python列表的切片取值详解
    目录1. 列表的切片2. 切片的语法3. 切片取值示例3.1 步长为1的切片取值3.2 步长为3的切片取值3.3 负索引取值1. 列表的切片 索引取值可以从列表中取出1个元素。 如果...
    99+
    2022-11-11
  • 详解Python中的__getitem__方法与slice对象的切片操作
    Fib实例虽然能作用于for循环,看起来和list有点像,但是,把它当成list来使用还是不行,比如,取第5个元素: >>> Fib()[5] Traceback (most rece...
    99+
    2022-06-04
    切片 详解 对象
  • numpy数组切片的使用
    目录numpy.array的数组切片numpy的数组合并numpy的常用函数讲解np.arange()随机函数seed()import numpy as np a = np.arra...
    99+
    2023-02-10
    numpy 数组切片
  • python字符串切片及常用方法示例详解
    目录一、切片二、常用方法2.1 查找2.2 修改2.3 判断一、切片 切片:指对操作的对象截取其中一部分的操作,字符串、列表、元组都支持切片操作 语法:序列[开始位置下标:结束位置下...
    99+
    2023-05-15
    python字符串切片 python切片
  • python中ndarray数组的索引和切片如何使用
    这篇文章主要介绍“python中ndarray数组的索引和切片如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python中ndarray数组的索引和切片如何使用”文章能帮助大家解决问题。索引...
    99+
    2023-07-02
  • vue卡片式点击切换图片组件使用详解
    本文实例为大家分享了vue卡片式点击切换图片组件,供大家参考,具体内容如下 因为公司业务的问题,最近在写vue项目,有了一个卡片图片的点击的需求,自己又不想写动画效果,就偷个懒,采用...
    99+
    2022-11-12
  • Python中切片的详细操作篇
    目录Python中的切片知识.一、切片的索引方式二、索引的一般方式三、 切片操作的 详细切法1.切割单个值2.切割完整对象3.当start和end全部为正数时.4.当start和en...
    99+
    2022-11-11
  • 一文详解Golang中的切片数据类型
    目录含义定义三个要素切片与数组的区别示例代码切片内存分布切片定义分类数组生成切片示例代码切片索引直接声明切片定义语法代码示例使用make定义切片常用操作长度计算容量计算判断是否为空切...
    99+
    2022-11-11
  • Python字符串切片语法和操作【详细讲解】
    切片含义:切片是指对操作的对象截取其中一部分的操作。 字符串切片和下标一样重要,要认真学习。在Python中不仅字符串支持切片操作,后面即将学习的列表、元组同样支持切片操作。 抛出问题: str1 = 'python'# 得到整个字符串...
    99+
    2023-10-02
    python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作