我遇到了一个代码,其中作者使用ellipsis
数组使用numpy
运算符(例如[...,1]),而不是slice
运算符(例如, [:,1])获取数组部分。
我对这个问题的研究
从scipy github wiki page中,我了解到两个运算符都执行一些类似的操作,即返回多维数组的切片。
我已经遍历了this question,它处理了numpy
数组的几种切片技术,但是没有找到关于何时使用slice
的详细说明运算符,以及何时需要使用ellipsis
或它们的功能是否相同。
在Example 1
中,我找不到这两个运算符之间的任何区别:
示例1:
import numpy as np
A = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
A[..., 0], A[:, 0] # Out: (array([1, 4, 7]), array([1, 4, 7]))
A[..., 0] == A[:, 0] # Out: array([ True, True, True])
所以我的问题是:
slice
与ellipsis
运算符与numpy.ndarrays
一起使用有什么区别?非常感谢您对我的问题进行详尽的阐述,并在此先感谢您的宝贵时间。
答案 0 :(得分:2)
两者的动机完全不同。
省略号的意思是“所有其他所有维度(我可以不费力地列举,不确定或不在乎有多少个)” >
slice的意思是“由起始索引和结束索引(和跨度)指定的当前维度的子集” 。