numpy中的省略号(...)和冒号(:)

  • 省略号和冒号的作用
    • 冒号的作用
    • 省略号的作用
  • 两者的区别

最近看到一份代码,里面出现类似这样的代码a[..., 0]。一时间不太清楚,于是去了解了一下。自己明白了,在这里记录一下。

省略号和冒号的作用

省略号和冒号都是用来操作列表,用来快速操作元素的。

冒号的作用

比如下面的例子:

c = np.random.randint(0, 100, 10)
print(c)

生成这样一个随机列表:

[49 29 75 51 23 39 92 97 55 56]

然后进行以下几种操作:

c[1:5]

[29, 75, 51, 23]

c[:5]

[49, 29, 75, 51, 23]

c[1:]

[29, 75, 51, 23, 39, 92, 97, 55, 56]

根据上面的结果我们可以看出,冒号是制定范围的符号,两边的符号都可以省略,省略之后按照列表的开始和结尾进行计算。

省略号的作用

首先看下面的例子,生成这样一个随机的多维列表:

a = np.random.randn(3,3,2)[[[-0.96299703  0.02378626][ 0.59746868  1.42771025][ 0.85895668 -1.14798297]][[ 0.17174135  0.57507109][ 2.3165666   0.60841675][-1.77101868 -1.59714269]][[-1.04117545 -0.09460908][-0.96938343 -0.95701071][ 1.28433109  0.65195701]]]

然后执行代码

b = a[..., 1][[ 0.02378626  1.42771025 -1.14798297][ 0.57507109  0.60841675 -1.59714269][-0.09460908 -0.95701071  0.65195701]]

原来3 * 3 * 2的矩阵变成了3 * 3的矩阵。

下面改变一下形式:

b = a[ 1, ...][[ 0.17174135  0.57507109][ 2.3165666   0.60841675][-1.77101868 -1.59714269]]

这下变成了一个3 * 2的矩阵。

再改变一下:

b = a[1, ..., 1][ 0.57507109  0.60841675 -1.59714269]

变成了一个3维的向量了。

通过以上的实验,我们可以总结一下省略号的作用:
若干省略的维度保持原样,其他维度保留给定参数的元素

什么意思呢,比如给定的是[3,3,2]的矩阵,如果查询的是[…, 1],那么,原来最后一维的向量只保留编号为1(第二个)的元素,之前的保持不变,所以会变成一个3*3的矩阵,最后一维只保留一个,消失了。

同理,查询[1,…],第一维的元素只保留编号为1(第二个)的元素,剩下的维度保持不变。

还有就是…在中间的时候,给定两端要保留的元素维度,其他保持不变,从第三个例子能够看出。

两者的区别

从上面的例子中,能够看出,两者有一定的区别:

  1. ...可以代表任意多维的元素,而每个:只能代表一个维度。
  2. :可以指定代表的维度的区间范围,...不能。
  3. ...只能出现一次,而:可以出现多次,但不能超过矩阵的维度。

numpy中的省略号(...)和冒号(:)相关推荐

  1. python中的[:-1] [:,:-1] python矩阵numpy中array的冒号 逗号

    如何理解[:-1]  [:,:-1] data = np.loadtxt('data.csv', delimiter = ',')     X = data[:,:-1]    #取所有行,取列到倒数 ...

  2. Python中Numpy中省略号的作用

    我们在Python中遇到如[0,-,0]是什么意思? Numpy 中可以用来选数据. >>> import numpy as np >>> a = [[1,2,3, ...

  3. 数据分析-----NumPy中的ndarray数组

    目录 Numpy概述 Python中的数组 NumPy中的ndarray ndarray中的数据类型 ndarray多维数组属性 ndarray的创建 NumPy 切片和索引 NumPy 线性代数 总 ...

  4. python科学计算笔记(一)NumPy中ndarray对象、ufunc运算、矩阵运算

    标准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针.这样为了保存一个简单的[1,2,3],需要有3个指针和三个 ...

  5. python创建列向量_关于Numpy中的行向量和列向量详解

    关于Numpy中的行向量和列向量详解 行向量 方式1 import numpy as np b=np.array([1,2,3]).reshape((1,-1)) print(b,b.shape) 结 ...

  6. Numpy中矩阵运算

    Numpy中矩阵运算 1 矩阵和向量 1.1 矩阵 矩阵,英文matrix,和array的区别矩阵必须是2维的,但是array可以是多维的. 如图:这个是 3×2 矩阵,即 3 行 2 列,如 m 为 ...

  7. Numpy中数组间运算

    Numpy中数组间运算 1 数组与数的运算     [可以直接进行运算] arr = np.array([[1, 2, 3, 2, 1, 4], [5, 6, 1, 2, 3, 1]]) arr + ...

  8. Numpy 中的 arange 函数

    1. 概述 Numpy 中 arange() 主要是用于生成数组,具体用法如下: 2. arange() 2.1 语法 numpy.arange(start, stop, step, dtype = ...

  9. python使用numpy中的flatten函数将2D numpy数组拉平为1Dnumpy数组、使用np.linalg.matrix_rank函数计算2D numpy数组的秩(rank)

    python使用numpy中的flatten函数将2D numpy数组拉平为1Dnumpy数组.使用np.linalg.matrix_rank函数计算2D numpy数组的秩(rank) 目录

最新文章

  1. 资源 | 8张思维导图帮你梳理深度学习机器学习多个知识点
  2. HTMLParser的初步学习
  3. DeepLearning:windows环境下C++环境实现Tensorflow编译部署
  4. 广东--阳江--闸波一天游归来,上PP~~
  5. python settings模块导入不了_无法导入设置“myproject.settings”(是否在sys.path上?):没有名为pinax的模块...
  6. 飞车手游服务器维护,QQ飞车手游更新出现异常怎么办 更新异常原因及解决方法技巧...
  7. 公众号文章折叠点击后展开案例_(案例)蜂窝纸板在包装中的应用重型箱
  8. 【转】PHP获取当前时间、时间戳的各种格式写法汇总[日期时间]
  9. 研究生期间如何成为科研大佬?
  10. BPMN2.0--消息事件(message)
  11. [BZOJ4719][P1600][NOIP2016]天天爱跑步[LCA+dfs序+差分]
  12. keil_4/MDK各种数据类型占用的字节数
  13. Atitit各种SDM 软件SDP sdm的ddd tdd bdd设计
  14. 局域网传输文件_如何“互传文件”?简单几步,方便快捷
  15. EtherCAT总线伺服速度控制功能块(H5U PLC)
  16. 计算机音量控制器打不开,Win10系统音量控制打不开的解决方法
  17. SSR门户项目爬坑之路(一)
  18. #DNS比较(北京联通宽带) @FDDLC
  19. kong/kongA docker部署+汉化
  20. java用account类型定义两个变量_java 编程

热门文章

  1. 一种新的爬虫网络解锁器
  2. css背景图片的设置
  3. java web进阶篇(八) Ajax(阿贾克斯)开发技术
  4. Python3 知乎回答爬取+数据文本分析——如何判断一个人是否喜欢你 项目实战结论及步骤笔记
  5. [号外]深圳各大运动品牌折扣店大集合!!!
  6. 华为云DLI连接PowerBI Desktop实践指南
  7. “笨办法”学Python 3基础篇 - 函数
  8. Eclipse中安装Subversive (Subversion的对应模块)
  9. 2019年3月东方财富网Java开发面试(2年工作经验)
  10. 基于微信小程序的废品回收系统#毕业设计