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