Numpy对数组按索引查询

三种索引方法:

基础索引
神奇索引
布尔索引

import numpy as np
# 一维向量
x = np.arange(10)
x

0~9

# 二维向量,一般用大写字母
X  = np.arange(20).reshape(4,5)
X

输出一个四行五列的向量组

基础索引

x
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
print(x[2], x[5], x[-1])
2 5 9
x[2:4]
array([2, 3])
x[2:-1]
array([2, 3, 4, 5, 6, 7, 8])
x[-3:]
array([7, 8, 9])
x[:-3]
array([0, 1, 2, 3, 4, 5, 6])

二维数组

X
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]])
# 分别用行坐标、列坐标,实现行列筛选
# X[0][0]
X[0, 0]
0
X[-1, 2]
17
# 可以省略后续索引值,返回的数据是降低一个维度的数组
# 这里的2,其实是要筛选第2行
X[2]
array([10, 11, 12, 13, 14])
# 筛选-1对应的行
X[-1]
array([15, 16, 17, 18, 19])
# 筛选多行
X[:-1] 
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])
# 筛选多行,然后筛选多列
X[:2, 2:4]
array([[2, 3],
       [7, 8]])
# 筛选所有行,然后筛选多列
X[:, 2]
array([ 2,  7, 12, 17])
x
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
x[2:4] = 666
x
array([  0,   1, 666, 666,   4,   5,   6,   7,   8,   9])
X[:1, :2] = 666
X
array([[666, 666,   2,   3,   4],
       [  5,   6,   7,   8,   9],
       [ 10,  11,  12,  13,  14],
       [ 15,  16,  17,  18,  19]])

神奇索引

其实就是:用整数数组进行的索引,叫神奇索引

一维数组

x = np.arange(10)
x
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
x[[3,4,7]]
array([3, 4, 7])
indexs = np.array([[0, 2], [1, 3]])
x[indexs]
array([[0, 2],
       [1, 3]])

实例:获取数组中最大的前N个数字

# 随机生成1到100之间的,10个数字
arr = np.random.randint(1,100,10)
arr
array([92, 16, 12, 57,  1, 66, 26, 55, 68, 84])
# arr.argsort()会返回排序后的索引index
# 取最大值对应的3个下标
arr.argsort()[-3:]
array([8, 9, 0], dtype=int64)
arr[arr.argsort()[-3:]]
array([68, 84, 92])

二维数组

X  = np.arange(20).reshape(4, 5)
X
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]])
# 筛选多行,列可以省略
X[[0, 2]]
array([[ 0,  1,  2,  3,  4],
       [10, 11, 12, 13, 14]])
X[[0, 2], :]
array([[ 0,  1,  2,  3,  4],
       [10, 11, 12, 13, 14]])
# 筛选多列,行不能省略
X[:, [0,2,3]]
array([[ 0,  2,  3],
       [ 5,  7,  8],
       [10, 12, 13],
       [15, 17, 18]])
# 同时指定行列-列表
# 返回的是[(0,1), (2,3), (3,4)]位置的数字
X[[0, 2, 3], [1, 3, 4]]
array([ 1, 13, 19])

你可能感兴趣的:(笔记,numpy,python,开发语言)