在numpy中,存在一些切片操作,例如a[1:3,3:5],但是我对a[:]和a[...]操作感到困惑,我是python新手,可以有人解释一下它们之间有什么区别吗?
最佳答案
...
是省略号,在纯 Python 中它基本上是一个非运算符。它用作代码的占位符,例如本例中:
while True:
...
在 numpy 中,它具有类似的用途,它是不切片运算符。由于 numpy 同时支持多个切片,这可能很有用。例如,要获取立方体的不同边:
In [1]: import numpy
In [2]: cube = numpy.arange(3**3).reshape(3, 3, 3)
In [3]: cube
Out[3]:
array([[[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8]],
[[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17]],
[[18, 19, 20],
[21, 22, 23],
[24, 25, 26]]])
In [4]: cube[0, ..., 0]
Out[4]: array([0, 3, 6])
In [5]: cube[..., 0, 0]
Out[5]: array([ 0, 9, 18])
In [6]: cube[0, 0, ...]
Out[6]: array([0, 1, 2])
应该注意的是,...
在功能上与上述情况下的 :
相同,但对于多维对象可能有所不同:
In [7]: cube[..., 0]
Out[7]:
array([[ 0, 3, 6],
[ 9, 12, 15],
[18, 21, 24]])
In [8]: cube[:, 0]
Out[8]:
array([[ 0, 1, 2],
[ 9, 10, 11],
[18, 19, 20]])
在多维对象中,...
根据需要插入 :
多次以达到完整维度
关于python - 与 numpy 操作 a[:] and a[. ..] 混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47975339/