[NumPy 学习笔记] - No.2 NumPy数据索引

numpy学习笔记

numpy是python中非常有用的一个库,我们可以使用numpy创建大型的高维数组并进行运算。这里记录一下numpy一些常用的方法。如果想仔细研究numpy的强大功能还需要翻阅NumPy API文档

数组索引

常见索引

对数组最简单的索引就是常见的[]索引

#  索引
x = np.array([1, 2, 3])
print ("x[0]: ", x[0]) # x[0]:  1
x[0] = 0
print ("x: ", x) # x:  [0 2 3]

y = np.arange(6).reshape(2,-1)  
print("y:\n",y) # [[0 1 2]
				# [3 4 5]]
print(y[1][1])  # 4
切片索引

在python中,我们使用切片来访问list;在NumPy中,也可以使用切片访问numpy

访问某一行/列:

y = np.arange(6).reshape(2,-1) 
print("y:\n",y) # [[0 1 2]
				# [3 4 5]]
    
print("row 0:",y[0,:])  # row 0: [0 1 2] 
print("column 2:",y[:,2]) # column 2: [2 5]

访问数组中的某一块数据:

print("row 0,1 & cols 1,2:\n",y[0:2,1:3])

row 0,1 & cols 1,2:
[[1 2]
[4 5]]

数组索引

在numpy中还可以使用数组进行索引:

t = np.arange(12).reshape(3,-1)
print("t :\n",t)
rows = [0,1,2]
cols = [0,3,1]

print("index values:\n",t[rows,cols])

t :
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
index values:
[0 7 9]

在上边的例子中,我们定义了一个3x4的矩阵,然后访问 [0][0], [1][3], [2][1]三个位置的数据。

布尔数组索引

在numpy中,我们还可以很轻松的查看,某些满足布尔条件的元素集合。示例如下:

在python中, x>2 代表一个布尔表达式,用于判断x是否大于二,返回True或者False;如果x是一个numpy的数组,将返回什么结果呢?

# Boolean array indexing
x = np.array([[1,2], [3, 4], [5, 6]])
bool_index = x > 2
print ("x:\n", x)
print ("x > 2:\n", bool_index)

x:
[[1 2]
[3 4]
[5 6]]
x > 2:
[[False False]
[ True True]
[ True True]]

可以看到,x > 2 返回了bool类型的numpy数组,该数组中每个元素是原数组中对应位置 针对 x > 2条件的结果。

Numpy中的布尔索引就是将布尔数组应用到numpy数组中;布尔数组中的True表示选取被索引数组对应位置的值,False则表示不选取对应位置的值。因此我们可以很简单的获取到,某个数组中所有大于2的元素的集合。

print ("x[x > 2]:\n", x[x > 2])

x[x > 2]:
[3 4 5 6]

资料参考:practicalAI

发布了118 篇原创文章 · 获赞 140 · 访问量 25万+

猜你喜欢

转载自blog.csdn.net/tjuyanming/article/details/88561983