Python之numpy数组篇(下)
一、数组排序
1、概念
(1)argsort()函数:返回一个数组
(2)索引:该数组中的每个元素的位置
(3)argmax()、arg
min()函数:返回数组中最大、最小元素的下标
(4)sort():数组原地排序
2、升序,最大、最小值
import numpy as np x = np.array([3,1,2]) np.argsort(x) #返回升序排序后元素的原下标 x[_] x = np.array([3,1,2,4]) x.argmax(),x.argmin() #最大值和最小值的下标 np.argsort(x) x[_]
3、原地、横向排序
x.sort()#原地排序 x x = np.random.randint(1,10,(2,5)) x x.sort(axis=1) #横向排序,注意纵向的元素对应关系变化了 x
二、数组内积运算
1、概念
(1)对于两个等长数组和
,其内积为两个数组中对应位置的元素乘积之和,计算公式如下:
(2)dot()函数:用来计算两个数组的内积
(3)numpy中的数组也提供了dot()方法,计算和另一个数组的内积,也可以借助于内置sum()函数计算两个数组的内积
2、代码例子
x = np.array((1,2,3)) y = np.array((4,5,6)) print(np.dot(x,y)) print(x.dot(y)) print(sum(x*y))
三、访问数组元素
1、使用介绍
可以通过下标和切片的形式来访问数组中的某个或多个元素
2、行列直接访问
b = np.array(([1,2,3],[4,5,6],[7,8,9])) b[0] #第0行所有元素 b[0][0] #第0行第0列的元素 b[0,2] #第0行第2列的元素,等价于b[0][2]的形式 b[[0,1]] #第0行和第1行的所有元素,只指定行下标,不指定列下标,表示所有列 b[[0,2,1],[2,1,0]] #第0行第2列、第2行第1列、第1行第0列的元素,先行后列
3、切片
a = np.arange(10) a[::-1] #方向切片 a[::2] #隔一个取一个元素 a[:5] #前5个元素
4、行列访问扩展
c = np.arange(25) #创建数组 c.shape =5,5 #修改数组形状 c c[0,2:5] #行下标为0且列下标介于[2,5)之间的元素值 c[1] #行下标为1的所有元素,不指定列下标,表示所有列 c[2:5,2:5] #行下标和列下标都介于[2,5)之间的元素值 c[[1,3],[2,4]] #第1行第2列元素和第3行第4列元素 c[[1,3],2:4] #第1行,第3行的第2,3列 c[:,[2,4]] #第2列和第4列所有元素 c[:,3] #第3列所有元素 c[[1,3]] #第1行第3行所有元素 c[[1,3]][:,[2,4]] #第1,3行第2,4列所有元素
四、数组对函数运算的支持
1、概念
numpy提供了大量用于对数组进行计算的函数,可以用于对数组中所有元素进行同样的计算返回新数组,处理速度比使用循环要快得多
2、例子
import numpy as np x = np.arange(0,100,10,dtype=np.floating) print(x) print(np.sin(x)) #一维数组中所有元素的值求正弦值 x = np.array(([1,2,3],[4,5,6],[7,8,9])) print(x) print(np.cos(x)) print(np.round(np.cos(x))) print(np.ceil(x/2))
五、改变数组形状
1、方法
(1)reshape():返回新数组但不能改变数组中元素的总数量
(2)resize():对数组进行原地修改并且会根据需要进行补0或丢弃部分元素
(3)shape属性:直接原地修改数组的大小
2、shape()
import numpy as np x = np.arange(1,11,1) x.shape #查看数组的形状 x.size #数组中元素的数量 x.shape = 2,5 #改为2行5列 x x.shape x.shape = 5,-1 #-1表示自动计算 x
3、reshape()
x = x.reshape(2,5) x x = np.array(range(5)) x.reshape((1,10)) #reshape()不能修改数组元素个数,出错
4、 resize()
x.resize((1,10)) #resize()可以修改数组元素个数 x np.resize(x,(1,3)) #使用numpy的resize()返回新数组 x #不对原数组进行任何修改
六、数组堆叠与合并
1、堆叠
(1)堆叠数组:指沿着特定的方向把多个数组合并到一起,numpy的h
(2)水平堆叠:
import numpy as np arr1 = np.array([1,2,3]) arr2 = np.array([4,5,6]) np.hstack((arr1,arr2)) arr3 = np.array([[1],[2],[3]]) arr4 = np.array([[4],[5],[6]]) np.hstack((arr3,arr4))
(3)垂直堆叠:
np.vstack((arr1,arr2)) np.vstack((arr3,arr4))
2、合并
(1)concatenate()函数也提供了类似的数组合并功能,参数axis是指定沿哪个方向或维度进行合并,默认为0,即按行合并
np.concatenate((arr1,arr2)) np.concatenate((arr3,arr4)) np.concatenate((arr3,arr4),axis=1)
Python 文章被收录于专栏
Python概述及应用领域,PyCharm、Jupyter notebook的安装与使用,编码规范,标准库、扩展库对象的导入与使用