切片嵌套列表

pre*_*lic 17 python numpy slice

我熟悉切片,我只是无法绕过这个,我尝试改变一些值来试图说明发生了什么,但这对我没有意义.

无论如何,这是一个例子:

l = [[0, 0, 0], [0, 1, 0], [1, 0, 0], [1, 1, 1]]  
print l[:,0:2]
Run Code Online (Sandbox Code Playgroud)

导致:

[[0, 0], [0, 1] [1, 0], [1, 1]]
Run Code Online (Sandbox Code Playgroud)

我试图将其翻译为"从索引0切换到0,2,递增2"这对我来说毫无意义.

GWW*_*GWW 13

你在做什么基本上是多轴切片.因为l是一个二维列表,并且您希望切片第二个维度,所以使用逗号来表示下一个维度.

所述, 0:2选择所述第二尺寸的前两个元素.

有一个非常好的解释这里.我记得当我第一次了解它时它澄清了一切.


小智 11

只有当 'l' 是一个 numpy 数组时,才对我说的那样工作。对于 'l' 作为常规列表,它会引发错误(Python 3.6):

>>> l
[[0, 0, 0], [0, 1, 0], [1, 0, 0], [1, 1, 1]]
>>> print (l[:,0:2])

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list indices must be integers or slices, not tuple

>>> l=np.array(l)
>>> l
array([[0, 0, 0],
       [0, 1, 0],
       [1, 0, 0],
       [1, 1, 1]])
>>> print (l[:,0:2])
[[0 0]
 [0 1]
 [1 0]
 [1 1]]
>>> 
Run Code Online (Sandbox Code Playgroud)