Day11

it2025-08-05  7

一、numpy概述

numpy具有矢量运算能力,快速、节省空间。numpy支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

二、numpy的运用

1、构建矩阵: 使用array方法

numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)

函数参数说明:

import numpy as np #将二维列表转换成二维矩阵 a = np.array([[1,2,3], [4,5,6]]) #定义转换类型 b = np.array([2.3,3.5,3.6],dtype=int) print("a:\n",a) print("b:\n",b) 运行结果: a: [[1 2 3] [4 5 6]] b: [2 3 3]

2、数组属性: shape方法:

import numpy as np a = np.array([[1,23,2],[1,3,2]]) print(a.shape) 运行结果: (2, 3) import numpy as np a = np.array(range(6)).reshape((2,3)) print(a) 运行结果: [[0 1 2] [3 4 5]]

创建0/1矩阵:

import numpy as np a = np.zeros((2,2)) b = np.ones((2,2)) print("zeros:\n",a) print("ones\n",b) 运行结果: zeros: [[0. 0.] [0. 0.]] ones [[1. 1.] [1. 1.]]

numpy.linspace

#在start与stop值之间等分,等分宽度为(stop-start)/num numpy.linspace(start, stop, num, endpoint, retstep, dtype)

示例:

import numpy as np a = np.linspace(10,20,5) print(a) 输出结果: [10. 12.5 15. 17.5 20. ]

切片和索引:

import numpy as np a = np.arange(10)[2:7:2] print(a) 输出结果: [2 4 6]

矩阵合并:

import numpy as np a = np.arange(10)[1:8:2].reshape(2,2) b = np.arange(10)[2:9:2].reshape(2,2) c = np.vstack((a,b))#竖直方向上 d = np.hstack((a,b))#水平方向上 #axis = 0等效于vstack #axis = 1等效于hstack e = np.concatenate((a,b),axis = 0) f = np.concatenate((a,b),axis = 1) print("竖直:\n",c,"\n水平:\n",d) print("******************") print("2竖直:\n",e,"\n2水平:\n",f) 运行结果: 竖直: [[1 3] [5 7] [2 4] [6 8]] 水平: [[1 3 2 4] [5 7 6 8]] ****************** 2竖直: [[1 3] [5 7] [2 4] [6 8]] 2水平: [[1 3 2 4] [5 7 6 8]]

常用矩阵运算符

import numpy as np a1 = np.array([[1,2,3],[4,5,6],[7,8,9]]) a2 = np.array([[4,5,6],[7,8,9],[7,8,9]]) #矩阵合并,转置 print(np.vstack((a1,a2)).T) #矩阵对位相加 print("加:",a1 + a2) #矩阵对位相乘 print("对位相乘",a1 * a2) #矩阵相乘 print("矩阵乘法",np.dot(a1,a2)) 运行结果: [[1 4 7 4 7 7] [2 5 8 5 8 8] [3 6 9 6 9 9]] 加: [[ 5 7 9] [11 13 15] [14 16 18]] 对位相乘 [[ 4 10 18] [28 40 54] [49 64 81]] 矩阵乘法 [[ 39 45 51] [ 93 108 123] [147 171 195]]

矩阵信息获取(如均值等)

示例:

import numpy as np a1 = np.array([[1,2,3],[4,5,6],[7,8,9]]) print(a1.min()) print(a1.max()) # 可以指定关键字参数axis来获得行最大(小)值或列最大(小)值 # axis=0 行方向最大(小)值,即获得每列的最大(小)值 # axis=1 列方向最大(小)值,即获得每行的最大(小)值 print(a1.max(axis=0)) print(a1.max(axis=1)) # 要想获得最大最小值元素所在的位置,可以通过argmax函数来获得 print(a1.argmax()) 运行结果: 1 9 [7 8 9] [3 6 9] 8
最新回复(0)