Python-Numpy语法总结-数组的索引和切片

普通索引和切片

像列表一样的索引和切片

a=np.arange(15).reshape(3,5)
a
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])
a[1][1]
6
a[[1,2]] #列表是不允许这样切的
array([[ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])

数组特有索引和切片方式

因为数组对象比较工整,所以可以采用数组特有的索引和切片。

a[[0,1]] #相当于a[[0,1],:],即:0,1行的所有列
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])
a[[0,1],[0,1]] #返回的结果为[0,6],这个结果可能不是你想要的。
#这个的意思是返回一个一维数组,这个一维数组包含两个数字。
#这两个数字对应的原行索引是0,1,对应的原列索引是0,1
#这个方法不能截取第0,1行0,1列对应的4个数字。
array([0, 6])
a[0:2,2:5]
array([[2, 3, 4],
       [7, 8, 9]])
a[[0,1],0:2] #用列表表示行号,用:表示列号
array([[0, 1],
       [5, 6]])
a[0:2,[0,1]]#结果等同于a[[0,1],0:2]
a[[0,2]][:,[1,2,3]]#选取任意不连续的行和列的切片方式:0,2行的1,2,3列
array([[ 1,  2,  3],
       [11, 12, 13]])

布尔索引

a=np.array(["a","b","a","b"])
a
array(['a', 'b', 'a', 'b'], dtype='<U1')
a=="a" #会返回一个布尔数组,它的长度和a数组0维上的长度一样。
array([ True, False,  True, False])
b=np.random.randint(1,10,(4,3))
b
array([[9, 3, 1],
       [6, 4, 4],
       [7, 6, 6],
       [5, 2, 5]])

进行布尔索引的时候,布尔值数组的长度必须和数组轴索引长度一致。

b[:,0]>3
array([ True,  True,  True,  True])

猜你喜欢

转载自blog.csdn.net/gracejpw/article/details/103439827
今日推荐