numpy切片里的省略号[...,0]的作用

Posted ppes

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了numpy切片里的省略号[...,0]的作用相关的知识,希望对你有一定的参考价值。

原文:https://www.cnblogs.com/ppes/p/9462063.html 

官网的定义:

Ellipsis expand to the number of : objects needed to make a selection tuple of the same length as x.ndim. There may only be a single ellipsis present.

按照定义的理解,它是对 切片 [ : ] 里的 : 的拓展,但是它只能出现一个,就是说你可以,[ : , : , : ],但是[ ... , ...]就会报错。

具体的拓展,看官方的说法也是一头雾水,代码还是更直观一点:

1 x = np.random.RandomState(5).randint(200, size=[3, 4, 5])
2 print(x.ndim, x.shape, x.size)
3 print(x)

技术分享图片

 按定义看,...  和 : 好像有点见不得人的关系,所以使用它们来进行比较:

首先是 

1 print("x: 
", x[:])
2 print(x[...]
, x[...])

两个结果都一样是 就是上图的 x

好像只是改个马甲而已,那么

print(x[..., 1]
, x[..., 1])
print(x[:, 1]
, x[:, 1])

技术分享图片

好吧,打扰了,现在看看是怎么回事。我就不解释 :了,毕竟我们的主角是 ... 。好了,我们仔细观察:

这个 1 好像就代表第2列(从0开始),如果是这样的话,那么使用了 ... 之后,数字 1 不再是元素的index 了 , 而是 轴(axis)

的索引了,关于轴可以看看这我对轴的介绍:https://www.cnblogs.com/ppes/p/9461246.html 。如果你看过我的介绍,或者知道轴的作用那么,

我们可以这样去判断,一共有4 列(假设为 y0,y1,y2,y3),所以我们 x[... :5]就会报错而[ ... : -5]就不会。结果正如猜想的一样,确实报错了,而-5也正好就是第1列(y0)的数据。

 

 现在我们知道 ... 的作用,就是对轴进行索引,那么,怎么确定哪一条轴呢?

 x[1 : ... ]

技术分享图片

现在你们大概也懂了,数字在哪一维:x[3维][2维][1维]。

但是我们只有添加一个 ... ,1 维 怎么获取呢,x[: , ... , 1] 、x[ 1, ...,1 ] 、x[ 1, 1, ... ]分别输出的是什么?

自己动手吧,不然你是记不住的!!因为神童是不会看这篇文章的。。。

以上是关于numpy切片里的省略号[...,0]的作用的主要内容,如果未能解决你的问题,请参考以下文章

只有整数、切片 (`:`)、省略号 (`...`)、numpy.newaxis (`None`) 和整数或布尔数组是有效的索引

RandomForest IndexError:只有整数、切片(`:`)、省略号(`...`)、numpy.newaxis(`None`)和整数或布尔数组是有效的索引

只有整数、切片 (`:`)、省略号 (`...`)、numpy.newaxis (`None`) 和整数或布尔数组是生成 rnn 的有效索引

在 numpy 中,用空元组和省略号对数组进行索引有啥作用?

numpy 切片

numpy——数组存取