Numpy是Python的一个多维数组对象支持库,最近在看《机器学习实战》的时候经常对一些索引和切片的用法感到困惑,因此自己查了一些资料整理了一下。
1.基本索引
import numpy
x=numpy.array([[1,2],[3.4],[5,6]])
print (x[0])
print(x[0][1])
#
[1, 2]
2
这里创建的是一个三行两列的数组,同C中的数组一样,x[0][1]代表第0行第1列的元素。
2.切片
import numpy
x1= numpy.array([[1,2],[3,4],[5,6],[7,8],[9,0]])
print(x1[1:3])
print(x1[:3])
print(x1[1:])
print(x1[0:4:2])
print(x1[1,1])
#
[[3 4]
[5 6]]
[[1 2]
[3 4]
[5 6]]
[[3 4]
[5 6]
[7 8]
[9 0]]
[[1 2]
[5 6]]
4
切片有的地方也称为提取,就是将数组中的的某一或某些元素提取出来组成新的数组。
x1[1:3]对应的是起点:第1行,终点第3行(注意:包含起点不包含终点)
起点和终点在不赋值的情况下,默认取数组头和数组尾。
第三个参数为切片步长,默认为1
对特定元素的提取与数组索引相同。
3.花式索引
花式索引的操作比较奇葩一点,可以针对你所要提取的行数以特定的序列提取。
import numpy
x1= numpy.array([[1,2],[3,4],[5,6],[7,8],[9,0]])
print(x1[[4,3,2]])
#
[[9 0]
[7 8]
[5 6]]