关于numpy:在python列表中冒号和逗号代表什么?

What does a colon and comma stand in a python list?

我在一个python脚本list[:, 1]中遇到了这个问题,我正试图找出逗号的作用。


一般来说:

1
foo[somestuff]

调用__getitem____setitem__。(也有__getslice____setslice__,但现在已经不赞成了,所以我们不谈这个)。现在,如果somestuff中有逗号,python将把tuple传递给底层函数:

1
foo[1,2]  # passes a tuple

如果有一个:,python将传递一个切片:

1
2
3
4
foo[:]  # passes `slice(None, None, None)`
foo[1:2]  # passes `slice(1, 2, None)`
foo[1:2:3]  # passes `slice(1, 2, 3)
foo[1::3]  # passes `slice(1, None, 3)

希望你能理解。现在,如果有逗号和冒号,Python将传递一个包含切片的元组。在您的示例中:

1
foo[:, 1]  # passes the tuple `(slice(None, None, None), 1)`

对象(foo对输入的操作完全取决于对象。


假设列表是一个二维(numpy)数组,如下所示:

[〔1, 2, 3〕,

〔4, 5, 6〕;

〔7, 8, 9〕

1
2
3
4
5
6
7
8
list[1,1] -->  5 # it says select the element in position [1,1] (note that indexes start from zero)


list[:,1] --> [2,5,8]

list[1][1]  --> 5

list[:][1] --> [4 5 6]

有关更多示例,请参见此部分。