列表过滤器和逗号的意义?

时间:2015-04-27 09:03:50

标签: python list filter

我正在处理Python中的列表和矩阵,我无法理解列表过滤器的含义。

myList = numpy.random.uniform(size=(m,n))

myList[:,6]实际上做了什么?

没有逗号的列表过滤器对我来说没问题(例如myList[1:-2], myList[2:] ...)

2 个答案:

答案 0 :(得分:3)

这是一个二维数组。逗号分隔两个不同的方向(行,列)。让我们试试m=3n=8

myList = numpy.random.uniform(size=(3,8))
> array([[ 0.36121954,  0.39804469,  0.25707183,  0.22275139,  0.36949532,
     0.39035669,  0.66837628,  0.37150618],
   [ 0.78177628,  0.63565838,  0.0186624 ,  0.89806821,  0.55308878,
     0.23682234,  0.90985795,  0.92696437],
   [ 0.48673502,  0.65489626,  0.49237721,  0.49957257,  0.96692522,
     0.50905997,  0.02131627,  0.92127346]])

所以它有3行,每行有8个条目(即8列)。

myList[:,6]
> array([ 0.66837628,  0.90985795,  0.02131627])

给出第6列(计数从0开始,所以8列的倒数第二列)。

更一般地说,我们可以使用切片表示法来获取行0和1以及第4列和第5列,或类似的范围。

myList[0:2,4:6]
> array([[ 0.36949532,  0.39035669],
   [ 0.55308878,  0.23682234]])

进一步推动切片表示法:

myList[0:2,1:6:2]
> array([[ 0.39804469,  0.22275139,  0.39035669],
   [ 0.63565838,  0.89806821,  0.23682234]])

给出行0和1,然后列1到6,步长为2(所以1,3和5)。

答案 1 :(得分:1)

实际上,myList不是列表,而是包含numpy行和m列的n数组。

使用myList[:,6],您只需选择列6即可。 :表示您占用所有行。