- NumPy 教程
- NumPy - 首页
- NumPy - 简介
- NumPy - 环境配置
- NumPy 数组
- NumPy - Ndarray 对象
- NumPy - 数据类型
- NumPy 数组的创建和操作
- NumPy - 数组创建例程
- NumPy - 数组操作
- NumPy - 从现有数据创建数组
- NumPy - 从数值范围创建数组
- NumPy - 数组迭代
- NumPy - 数组重塑
- NumPy - 数组连接
- NumPy - 数组堆叠
- NumPy - 数组分割
- NumPy - 数组展平
- NumPy - 数组转置
- NumPy 索引和切片
- NumPy - 索引和切片
- NumPy - 高级索引
- NumPy 数组属性和运算
- NumPy - 数组属性
- NumPy - 数组形状
- NumPy - 数组大小
- NumPy - 数组步长
- NumPy - 数组元素大小
- NumPy - 广播
- NumPy - 算术运算
- NumPy - 数组加法
- NumPy - 数组减法
- NumPy - 数组乘法
- NumPy - 数组除法
- NumPy 高级数组运算
- NumPy - 交换数组轴
- NumPy - 字节交换
- NumPy - 复制和视图
- NumPy - 元素级数组比较
- NumPy - 数组过滤
- NumPy - 数组连接
- NumPy - 排序、搜索和计数函数
- NumPy - 数组搜索
- NumPy - 数组的并集
- NumPy - 查找唯一行
- NumPy - 创建日期时间数组
- NumPy - 二元运算符
- NumPy - 字符串函数
- NumPy - 数学函数
- NumPy - 统计函数
- NumPy - 矩阵库
- NumPy - 线性代数
- NumPy - Matplotlib
- NumPy - 使用 Matplotlib 绘制直方图
- NumPy - NumPy 的 I/O 操作
- NumPy 排序和高级操作
- NumPy - 数组排序
- NumPy - 沿轴排序
- NumPy - 使用花式索引排序
- NumPy - 结构化数组
- NumPy - 创建结构化数组
- NumPy - 操作结构化数组
- NumPy - 字段访问
- NumPy - 记录数组
- Numpy - 加载数组
- Numpy - 保存数组
- NumPy - 向数组追加值
- NumPy - 交换数组列
- NumPy - 向数组插入轴
- NumPy 处理缺失数据
- NumPy - 处理缺失数据
- NumPy - 识别缺失值
- NumPy - 删除缺失数据
- NumPy - 缺失数据插补
- NumPy 性能优化
- NumPy - 使用数组进行性能优化
- NumPy - 使用数组进行矢量化
- NumPy - 数组的内存布局
- Numpy 线性代数
- NumPy - 线性代数
- NumPy - 矩阵库
- NumPy - 矩阵加法
- NumPy - 矩阵减法
- NumPy - 矩阵乘法
- NumPy - 元素级矩阵运算
- NumPy - 点积
- NumPy - 矩阵求逆
- NumPy - 行列式计算
- NumPy - 特征值
- NumPy - 特征向量
- NumPy - 奇异值分解
- NumPy - 求解线性方程组
- NumPy - 矩阵范数
- NumPy 元素级矩阵运算
- NumPy - 求和
- NumPy - 求均值
- NumPy - 求中位数
- NumPy - 求最小值
- NumPy - 求最大值
- NumPy 集合运算
- NumPy - 唯一元素
- NumPy - 交集
- NumPy - 并集
- NumPy - 差集
- NumPy 有用资源
- NumPy 编译器
- NumPy - 快速指南
- NumPy - 有用资源
- NumPy - 讨论
NumPy - 点积
什么是点积?
点积,也称为标量积,是一种数学运算,它接受两个等长数字序列(通常是向量)并返回单个数字。
在矩阵的上下文中,点积用于执行矩阵乘法,这是许多数学、物理和工程领域的基本运算。
两个向量a和b的点积定义为:
a . b = a1b1 + a2b2 + ... + anbn
其中,ai和bi分别是向量a和b的分量,n是维数。
使用点积进行矩阵乘法
在矩阵乘法中,点积用于将第一个矩阵的行乘以第二个矩阵的列。这会产生一个新矩阵,其中每个元素都是对应行和列向量的点积。
考虑两个矩阵A和B:
A = [[a11, a12], [a21, a22]] B = [[b11, b12], [b21, b22]]
乘积C = A . B为:
C = [[a11b11 + a12b21, a11b12 + a12b22], [a21b11 + a22b21, a21b12 + a22b22]]
使用 NumPy 进行点积
NumPy 提供了一种方便的方法来使用dot()函数执行点积。此函数可用于向量点积和矩阵乘法。
示例
在下面的示例中,点积计算为 (1 * 4) + (2 * 5) + (3 * 6) = 32:
import numpy as np # Define two vectors vector_1 = np.array([1, 2, 3]) vector_2 = np.array([4, 5, 6]) # Compute dot product dot_product = np.dot(vector_1, vector_2) print(dot_product)
以下是获得的输出:
32
矩阵点积
要计算两个矩阵的点积,我们使用相同的dot()函数。
示例
在这个例子中,两个矩阵的点积计算如下:
[[1*5 + 2*7, 1*6 + 2*8], [3*5 + 4*7, 3*6 + 4*8]]
import numpy as np # Define two matrices matrix_1 = np.array([[1, 2], [3, 4]]) matrix_2 = np.array([[5, 6], [7, 8]]) # Compute dot product matrix_product = np.dot(matrix_1, matrix_2) print(matrix_product)
以下是获得的输出:
[[19 22] [43 50]]
更高维数组的点积
NumPy 的dot()函数也可以处理更高维的数组。在这种情况下,该函数计算第一个数组的最后一个轴和第二个数组的倒数第二个轴上的点积。
示例
在这个例子中,为每一对子数组计算点积,得到一个新的三维数组:
import numpy as np # Define two 3-dimensional arrays array_1 = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) array_2 = np.array([[[1, 0], [0, 1]], [[1, 1], [1, 0]]]) # Compute dot product array_product = np.dot(array_1, array_2) print(array_product)
以下是获得的输出:
[[[[ 1 2] [ 3 1]] [[ 3 4] [ 7 3]]] [[[ 5 6] [11 5]] [[ 7 8] [15 7]]]]
使用 @ 运算符进行点积
在 Python 3.5 及更高版本中,@运算符可以用作矩阵乘法的dot()函数的替代方法。这使得代码更易读且更简洁。
示例
以下示例的结果与使用dot()函数相同,但语法更简洁:
import numpy as np # Define two matrices matrix_1 = np.array([[1, 2], [3, 4]]) matrix_2 = np.array([[5, 6], [7, 8]]) # Using @ operator for matrix multiplication matrix_product = matrix_1 @ matrix_2 print(matrix_product)
以下是获得的输出:
[[19 22] [43 50]]
点积的应用
点积是一个基本运算,在各个领域都有很多应用:
- 机器学习:点积用于计算向量之间的相似度,这在支持向量机和神经网络等算法中至关重要。
- 物理学:点积用于计算力所做的功以及在不同方向上投影向量。
- 计算机图形学:点积用于着色计算以及确定表面和光源之间的角度。
- 线性代数:点积是求解线性方程组和变换的基础。
示例:在机器学习中使用点积
在机器学习中,点积通常用于计算神经网络中的权重和偏差。
在这个例子中,点积计算输入特征的加权和,这是计算神经网络输出的重要步骤:
import numpy as np # Define input vector (features) input_vector = np.array([0.5, 1.5, -1.0]) # Define weight vector (weights) weights = np.array([2.0, -1.0, 0.5]) # Compute the weighted sum (dot product) output = np.dot(input_vector, weights) print(output)
以下是获得的输出:
-1.0
广告