我正在处理Python中的列表和矩阵,我无法理解列表过滤器的含义。
myList = numpy.random.uniform(size=(m,n))
myList[:,6]
实际上做了什么?
没有逗号的列表过滤器对我来说没问题(例如myList[1:-2], myList[2:]
...)
答案 0 :(得分:3)
这是一个二维数组。逗号分隔两个不同的方向(行,列)。让我们试试m=3
,n=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
即可。 :
表示您占用所有行。