当前位置: 首页 > wzjs >正文

手机网站asp做一婚恋网站多少钱

手机网站asp,做一婚恋网站多少钱,深圳市福田建设局网站,做网站上数字快速增加NumPy-核心函数np.dot深入理解 一、数学原理:从向量点积到矩阵乘法1. 向量点积(内积)2. 矩阵乘法 二、np.dot()的核心语法与特性函数签名核心特性 三、实战案例:从基础运算到高级应用1. 一维数组:向量点积2. 二维数组&…

NumPy-核心函数np.dot深入理解

    • 一、数学原理:从向量点积到矩阵乘法
      • 1. 向量点积(内积)
      • 2. 矩阵乘法
    • 二、np.dot()的核心语法与特性
      • 函数签名
      • 核心特性
    • 三、实战案例:从基础运算到高级应用
      • 1. 一维数组:向量点积
      • 2. 二维数组:标准矩阵乘法
      • 3. 高维数组:广播规则下的点积
    • 四、与其他乘法函数的对比
      • 1. np.dot() vs np.matmul() vs @运算符
      • 2. np.dot() vs * 运算符
    • 五、性能优化与注意事项
      • 1. 利用BLAS/LAPACK加速
      • 2. 内存高效的批量运算
      • 3. 常见错误:形状不匹配
    • 六、应用场景:从机器学习到物理模拟
      • 1. 线性回归:预测模型
      • 2. 神经网络:前向传播
      • 3. 物理模拟:向量投影

矩阵乘法和向量点积是基础运算之一,NumPy提供的np.dot()函数作为实现这些运算的核心工具,本文我将从数学原理、函数特性、多维应用及性能优化等角度,全面解析np.dot()的核心机制。

一、数学原理:从向量点积到矩阵乘法

1. 向量点积(内积)

对于两个长度相同的向量 a = [ a 1 , a 2 , . . . , a n ] \mathbf{a} = [a_1, a_2, ..., a_n] a=[a1,a2,...,an] b = [ b 1 , b 2 , . . . , b n ] \mathbf{b} = [b_1, b_2, ..., b_n] b=[b1,b2,...,bn],其点积定义为:
a ⋅ b = ∑ i = 1 n a i × b i \mathbf{a} \cdot \mathbf{b} = \sum_{i=1}^{n} a_i \times b_i ab=i=1nai×bi
几何意义 a ⋅ b = ∣ a ∣ × ∣ b ∣ × cos ⁡ θ \mathbf{a} \cdot \mathbf{b} = |\mathbf{a}| \times |\mathbf{b}| \times \cos\theta ab=a×b×cosθ,其中 θ \theta θ 为两向量的夹角。

2. 矩阵乘法

对于矩阵 A A A(形状为 m × n m \times n m×n)和矩阵 B B B(形状为 n × p n \times p n×p),其乘积 C = A × B C = A \times B C=A×B 的元素 c i j c_{ij} cij 定义为:
c i j = ∑ k = 1 n a i k × b k j c_{ij} = \sum_{k=1}^{n} a_{ik} \times b_{kj} cij=k=1naik×bkj
关键条件:矩阵 A A A 的列数必须等于矩阵 B B B 的行数。

二、np.dot()的核心语法与特性

函数签名

numpy.dot(a, b, out=None)
  • 参数
    • a, b:输入数组(必须为相同数据类型)
    • out:可选参数,用于存储结果的数组(需预先分配内存)

核心特性

  1. 动态行为

    • 当输入为一维数组时,执行向量点积(返回标量)
    • 当输入为二维数组时,执行标准矩阵乘法
    • 当输入为更高维数组时,遵循NumPy的广播规则(后文详述)
  2. 数据类型

    • 输入数组必须为相同数据类型(如float64int32
    • 结果数据类型与输入一致(除非显式指定out参数)

三、实战案例:从基础运算到高级应用

1. 一维数组:向量点积

import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
result = np.dot(a, b)
print(result)  # 输出:1*4 + 2*5 + 3*6 = 32

2. 二维数组:标准矩阵乘法

A = np.array([[1, 2], [3, 4]])  # 形状:(2, 2)
B = np.array([[5, 6], [7, 8]])  # 形状:(2, 2)
C = np.dot(A, B)
print(C)
# 输出:
# [[1*5 + 2*7, 1*6 + 2*8],
#  [3*5 + 4*7, 3*6 + 4*8]] = [[19, 22], [43, 50]]

3. 高维数组:广播规则下的点积

当输入数组维度≥3时,np.dot()的行为遵循以下规则:

  • 将最后一维视为向量维度,执行点积运算
  • 其他维度保持不变(通过广播机制匹配)

示例:三维数组点积

A = np.random.rand(2, 3, 4)  # 形状:(2, 3, 4)
B = np.random.rand(2, 4, 5)  # 形状:(2, 4, 5)
C = np.dot(A, B)  # 形状:(2, 3, 2, 5)
print(C.shape)  # 输出:(2, 3, 2, 5)

运算逻辑

  1. 对于每个ij,计算A[i,j,:](形状为4)与B[i,:,:](形状为4×5)的矩阵乘法
  2. 结果形状为(2, 3, 2, 5),其中前两维来自A,后两维来自B的后两维

四、与其他乘法函数的对比

1. np.dot() vs np.matmul() vs @运算符

函数一维数组行为二维数组行为高维数组行为
np.dot()向量点积(标量)矩阵乘法最后一维点积,保留其他维度
np.matmul()向量点积(标量)矩阵乘法最后两维矩阵乘法,广播其他
@运算符向量点积(标量)矩阵乘法np.matmul()

示例对比

A = np.random.rand(2, 3, 4)
B = np.random.rand(2, 4, 5)
C_dot = np.dot(A, B)        # 形状:(2, 3, 2, 5)
C_matmul = np.matmul(A, B)  # 形状:(2, 3, 5)

2. np.dot() vs * 运算符

  • np.dot():执行矩阵乘法或向量点积
  • * 运算符:执行元素级乘法(需形状完全一致或可广播)
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
dot_result = np.dot(A, B)      # 矩阵乘法
mult_result = A * B            # 元素级乘法
print(dot_result)  # [[19, 22], [43, 50]]
print(mult_result)  # [[5, 12], [21, 32]]

五、性能优化与注意事项

1. 利用BLAS/LAPACK加速

NumPy底层通过BLAS(Basic Linear Algebra Subprograms)库实现矩阵运算,在多核CPU上可自动并行加速:

# 检查NumPy使用的BLAS后端
import numpy as np
print(np.show_config())  # 查看是否使用OpenBLAS或MKL

2. 内存高效的批量运算

对于大规模矩阵乘法,可使用out参数避免中间结果的内存分配:

result = np.empty((m, p))
np.dot(A, B, out=result)  # 直接将结果写入预分配内存

3. 常见错误:形状不匹配

矩阵乘法要求A的列数等于B的行数:

A = np.array([[1, 2], [3, 4]])  # 形状:(2, 2)
B = np.array([[5, 6]])          # 形状:(1, 2)
try:np.dot(A, B)  # 错误:A的列数(2) ≠ B的行数(1)
except ValueError as e:print(e)  # 输出:shapes (2,2) and (1,2) not aligned: 2 (dim 1) != 1 (dim 0)

六、应用场景:从机器学习到物理模拟

1. 线性回归:预测模型

线性回归模型可表示为矩阵乘法: y ^ = X β \hat{y} = X\beta y^=,其中 X X X为特征矩阵, β \beta β为权重向量。

# 假设X.shape=(100, 5)(100个样本,5个特征),beta.shape=(5,)
y_pred = np.dot(X, beta)  # 预测结果,shape=(100,)

2. 神经网络:前向传播

神经网络的每一层可表示为: z = W x + b z = Wx + b z=Wx+b,其中 W W W为权重矩阵, x x x为输入向量。

# 假设W.shape=(100, 50)(50个输入神经元,100个输出神经元)
# x.shape=(50,)(单个样本)
z = np.dot(W, x) + b  # 线性变换,shape=(100,)

3. 物理模拟:向量投影

计算向量 a \mathbf{a} a在向量 b \mathbf{b} b上的投影:

projection = np.dot(a, b) / np.dot(b, b) * b

总结
np.dot()核心价值在于:

  1. 数学抽象:统一表示向量点积和矩阵乘法,简化代码实现
  2. 性能优化:底层利用BLAS/LAPACK实现高效计算,支持多核并行
  3. 多维兼容:通过广播机制处理高维数组,适应复杂数据结构

根据具体场景选择合适的乘法函数:

  • 向量点积或标准矩阵乘法 → np.dot()
  • 高维数组的矩阵乘法 → np.matmul()@运算符
  • 元素级乘法 → *运算符

That’s all, thanks for reading!
觉得有用就点个赞、收进收藏夹吧!关注我,获取更多干货~


文章转载自:

http://LW4K3uHF.xqzrg.cn
http://6zjxFy8w.xqzrg.cn
http://fh6OWL30.xqzrg.cn
http://LLoB5p1g.xqzrg.cn
http://nKG09Nq2.xqzrg.cn
http://2xaCg67G.xqzrg.cn
http://JJ50zWAH.xqzrg.cn
http://nrhVocrQ.xqzrg.cn
http://9aQ2DZxq.xqzrg.cn
http://LPI8NUHB.xqzrg.cn
http://mnwkp9Xe.xqzrg.cn
http://iAQNvZkq.xqzrg.cn
http://D1SeAcYR.xqzrg.cn
http://Z5tUPsro.xqzrg.cn
http://YY1dw9wb.xqzrg.cn
http://7HS7sHOg.xqzrg.cn
http://I0GbInHN.xqzrg.cn
http://gEmYqPxW.xqzrg.cn
http://3nazajAd.xqzrg.cn
http://BmvbFpmi.xqzrg.cn
http://Hu9FVsKY.xqzrg.cn
http://Rbs10HOj.xqzrg.cn
http://RBuGLGOS.xqzrg.cn
http://HqoGhHA9.xqzrg.cn
http://LmTbrmTL.xqzrg.cn
http://x89M9LVK.xqzrg.cn
http://0haisoMe.xqzrg.cn
http://Aqn2ETI9.xqzrg.cn
http://7Cm4M0dI.xqzrg.cn
http://NruiIkTg.xqzrg.cn
http://www.dtcms.com/wzjs/687463.html

相关文章:

  • 旅游网站建设方案之目标营销型网站建设公司推荐
  • 官方网站建设银行信用卡百度地图导航手机版免费下载
  • 长沙网站托管公司排名南阳网站排名优化价格
  • 宣传网站站点最有效的方式是北京市门头沟有没有做网站的
  • 网站建设的售后服务怎么写安徽省住房城乡建设厅网站公示
  • ps做电商网站图标备案信息查询官网
  • 手工视频制作网站合肥全网推广
  • 网站模板源码下载网学校网站建站
  • 网站建设最好济南高端网站建设价格
  • 手机上哪个网站企业网站优化设计应该把什么放在首位
  • 软件属于网站开发吗做实验用哪些国外网站
  • 益阳建设网站公司凯里市建设局网站
  • vs2010网站开发 视频北京大学php培训网站源码(dede
  • 深圳龙岗高端网站建设宁波高端网站制作公司
  • 如何制作单页网站广东东莞自己建站教程
  • 网站主目录建设一个网站需要哪些软硬件条件
  • 如果想看网站的收费电影应该怎么做吉林建筑信息平台
  • 天津做网站优化公司关于做网站的合同
  • 手机有软件做ppt下载网站有哪些内容梧州外贸网站推广设计
  • 青岛正规网站建设哪家便宜免费云手机无限时间版
  • 网站开发需要证书吗菏泽seo
  • 西安网站制作费用微网站内容页模板
  • 互联网营销与推广佛山百度seo代理
  • html5美食网站顺企网下载安装
  • 天津葛沽 网站建设公司外贸五金网站
  • asp网站开发上传组建生产企业网站建设
  • 宽屏大气企业网站源码淘宝网站用什么语言做的
  • 欧美设计网站软件科技有限公司
  • 官网建设银行网站网站建设需要租用什么
  • 网站规划设计报告网络服务部工作计划