numpy 的四则运算
一、一维矩阵的加减乘除,三角函数
注意,如果是两个数组运算,则元素个数要一致
import numpy as np a=np.array([10,20,30,40]) #array([10, 20, 30, 40]) b=np.arange(4) #array([0, 1, 2, 3]) c=np.arange(3) #array([0, 1, 2]) a+4 #array([14, 24, 34, 44]) a+b #array([10, 21, 32, 43]) #如果两个数组元素个数不一致,就不能相加 a+c #ValueError: operands could not be broadcast together with shapes (4,) (3,) a-b #array([10, 19, 28, 37]) a*b #array([ 0, 20, 60, 120]) b/a #array([0. , 0.05 , 0.06666667, 0.075 ]) sum(a) #100 sin(a) # array([-0.54402111, 0.91294525, -0.98803162, 0.74511316]) np.sin(a) # array([-0.54402111, 0.91294525, -0.98803162, 0.74511316]) cos(a) #array([-0.83907153, 0.40808206, 0.15425145, -0.66693806]) tan(a) #array([ 0.64836083, 2.23716094, -6.4053312 , -1.11721493])
二、多维矩阵的乘法
矩阵的乘法,A(m*n)*B(n*c),其中A的列数=B的行数,生成一个m*c的C矩阵,C[0,0]=A[0,0]*B[0,0]+A[0,1]*B[1,0],C[0,1]=A[0,0]*B[0,1]+A[0,1]*B[1,1]
import numpy as np a=np.array([[1,1], [0,1]]) b=np.arange(4).reshape((2,2)) a*b#两个同型矩阵对应元素的乘积 np.dot(a,b)#矩阵的乘法运算 a.dot(b) #矩阵ab的乘积 ''' array([[0, 1], [0, 3]]) array([[2, 4], [2, 3]]) array([[2, 4], [2, 3]]) '''
写成函数就是这样的了
def array_dot(a,b): m,n=shape(a) j,k=shape(b) c=ones(m*k).reshape(m,k) if n!=j: return else: for i in range(m): for l in range(k): c[i,l]=sum(a[i]*b[:,l]) return c
三、多维矩阵行列运算
import numpy as np a=np.array([[1,2,3],[2,3,4]]) a.sum() a.max() a.sum(axis=1) #array([6, 9]) a.sum(axis=0) # array([3, 5, 7])
四、矩阵的索引运算
argmin() 和 argmax() 两个函数分别对应着求矩阵中最小元素和最大元素的索引
import numpy as np A=np.arange(2,14) print(A) print(np.argmin(A)) #0 print(np.argmax(A)) #11 print(np.mean(A)) # 均值7.5 print(A.mean()) #均值 7.5 print(np.average(A))# 均值7.5 print(np.median(A)) #中位数7.5 print(np.cumsum(A)) # 累加[ 2 5 9 14 20 27 35 44 54 65 77 90] print(np.diff(A))#下面显示 #将所有非零元素的行与列坐标分割开,重构成两个分别关于行和列的矩阵 print(np.nonzero(A))
[ 2 3 4 5 6 7 8 9 10 11 12 13] 0 11 7.5 7.5 7.5 7.5 [ 2 5 9 14 20 27 35 44 54 65 77 90] [1 1 1 1 1 1 1 1 1 1 1] (array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], dtype=int64),)
五、矩阵转置
import numpy as np A=np.arange(1,10).reshape(3,3) A #transpose print(np.transpose(A)) #T print(A.T) ''' [[1 2 3] [4 5 6] [7 8 9]] [[1 4 7] [2 5 8] [3 6 9]] [[1 4 7] [2 5 8] [3 6 9]] '''
六、矩阵截取clip
import numpy as np a=np.arange(1,13).reshape((3,4)) print(a) print(np.clip(a,5,9))#最小5,最大9,小于5的都成了5,大于9的都成了9 ''' 输出结果 [[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]] [[5 5 5 5] [5 6 7 8] [9 9 9 9]] '''
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人