numpy用法笔记
- 数组聚合
-
#聚合操作 x = np.arange(1,5) y = np.add.reduce(x) #返回x所有元素之和 y = np.multiply.reduce(x) #返回所有元素的乘积 #外积(英语:Outer product),在线性代数中一般指两个向量的张量积,其结果为一矩阵;与外积相对,两向量的内积结果为标量。 #外积也可视作是矩阵的克罗内克积的一种特例。注意到:一些作者将“张量的外积”作为张量积的同义词。 y = np.multiply.outer(x,x) #该函数可以产生乘法表
-
#计算列,或者行的sum或者最大值 x = np.arange(1,10).reshape(3,3) print(x) print(x.sum(axis = 0)) print(x.max(axis = 0))
-
- 数组创建
-
# #从头建立数组,创建一维数组,该数组有10个元素,元素值为0 L5 = np.zeros((10) , dtype='int') print(L5) #3*4二维数组,元素初始化为1 L6 = np.ones((3,4) , dtype='float') print(L6) #5*4二维数组,元素初始化为3.3 L7 = np.full((5,4), 3.3) print(L7) #整数数组,0-20之间整数,每隔两个元素取一个值 L8 = np.arange(0, 20 , 3) #0,20之间的数字,均分为10份 L9 = np.linspace(0,20,10) print(L8 , L9) #3*3二维数组,随机数 L10 = np.random.random((3,3)) print(L10) #符合正态分布,均值为0,方差为1,3*3 L11 = np.random.normal(0, 1 ,(3,3)) print(L11) #0,12间的随机整数作为元素,3*3 L12 = np.random.randint(0,12,(3,3)) print(L12) #3*3单位矩阵 L13 = np.eye(3) print(L13) #一维数组,元素不初始化 L14 = np.empty(4) print(L14) L1 = np.random.randint(10,size=(3,4)) print(L1,L1.ndim,L1.size,L1.shape)
数组拼接
-
-
#字符串拼接 x = np.array([[1,2,3],[4,5,6]]) y = np.array([[10,20,30],[40,50,60]]) z = np.concatenate([x,y],axis=0) f = np.hstack([x,y]) print(z)
-
结果
-
[[ 1 2 3] [ 4 5 6] [10 20 30] [40 50 60]] [[ 1 2 3] [ 4 5 6] [10 20 30] [40 50 60]]
-
- 切片是原数组的视图,不是副本,所以改变它,原数组内的元素会发生改变
#一维数组切片 L1 = np.arange(10) L2 = L1[:5]#其实元素开始,到第五个元素 L3 = L1[3::3]#第三个元素开始,每隔两个元素取一个值 L4 = L1[5::-2] #先逆序,再从5元素开始,隔一个元素取一个值 print(L1) print(L2) print(L3) print(L4)
-
结果:
[0 1 2 3 4 5 6 7 8 9] [0 1 2 3 4] [3 6 9] [6 3 0]
-
多维
-
#多维数组切片 L1 = np.random.randint(10,size=(5,6)) L2 = L1[:2,:3] L3 = L1[3:5,4:6] L4 = L1[::2,::2]#每隔一行,一列取一个 L5 = L4[::-1,::-1]#行,列逆序 print('L1\r\n',L1) print('L2\r\n',L2) print('L3\r\n',L3) print('L4\r\n',L4) print('L5\r\n',L5)
-
-
结果
-
L1 [[6 0 4 3 2 5] [7 0 4 8 6 5] [1 4 3 3 4 4] [5 5 8 5 0 1] [9 8 2 9 8 5]] L2 [[6 0 4] [7 0 4]] L3 [[0 1] [8 5]] L4 [[6 4 2] [1 3 4] [9 2 8]] L5 [[8 2 9] [4 3 1] [2 4 6]]
-