Python的numpy库矩阵计算(数据分析)

一、创建矩阵

python 复制代码
import numpy as np

#创建矩阵

a=np.arange(15).reshape(3,5)
b=np.arange(15,30).reshape(3,5)

使用arrange和reshape创建的二维数组就可以看成矩阵。

此时a和b存储的是:

\[ 0 1 2 3 4

5 6 7 8 9

10 11 12 13 14\]

\[15 16 17 18 19

20 21 22 23 24

25 26 27 28 29\]

二、矩阵的加法

1、矩阵跟矩阵的加法

如果是两个矩阵相加,则会对应位置的元素进行相加

例如上述代码中的a和b矩阵相加:

python 复制代码
print(a+b)

输出:

\[15 17 19 21 23

25 27 29 31 33

35 37 39 41 43\]

2、矩阵与变量的加法

如果是变量与矩阵相加,那么会矩阵每个元素都加一遍变量的值。

例如:

python 复制代码
import numpy as np

#创建矩阵

a=np.arange(15).reshape(3,5)
e=3
print(a+e)

输出:

\[ 3 4 5 6 7

8 9 10 11 12

13 14 15 16 17\]

三、矩阵的减法

矩阵的减法与加法相同。

四、矩阵的乘法

  1. 矩阵与标量的乘法

    当你想要将一个矩阵的每个元素都乘以一个标量(即一个单独的数)时,你可以简单地使用NumPy的广播功能。

    复制代码
    python 复制代码
    import numpy as np  
    
    # 创建一个矩阵  
    A = np.array([[1, 2], [3, 4]])  
    
    # 标量  
    scalar = 2  
    
    # 矩阵与标量的乘法  
    C = A * scalar  
    print(C)  
    # 输出:  
    # [[2 4]  
    #  [6 8]]
  2. 矩阵与向量的乘法(点积/内积)

    在NumPy中,通常使用dot函数或@运算符来进行矩阵与向量的乘法。但是,请注意,向量在NumPy中通常表示为一维数组,而在进行矩阵乘法时,你可能需要将其重塑为二维数组(即列向量或行向量)。

    python 复制代码
    # 创建一个矩阵  
    A = np.array([[1, 2], [3, 4]])  
    
    # 创建一个向量(这里我们将其视为列向量)  
    v = np.array([5, 6])  
    
    # 使用 dot 函数进行矩阵与向量的乘法  
    result_dot = np.dot(A, v)  
    print(result_dot)  
    # 输出:  
    # [17 39]  
    
    # 或者使用 @ 运算符(Python 3.5+)  
    result_at = A @ v  
    print(result_at)  
    # 输出与上面相同

    注意:如果v是一个一维数组,并且你希望它被视为列向量,那么上面的代码是正确的。但是,如果v已经是一个二维数组(例如,形状为(2, 1)的列向量),则不需要额外的重塑步骤。

  3. 矩阵与矩阵的乘法

    同样地,你可以使用dot函数或@运算符来进行矩阵与矩阵的乘法。

    复制代码
    python 复制代码
    # 创建两个矩阵  
    A = np.array([[1, 2], [3, 4]])  
    B = np.array([[5, 6], [7, 8]])  
    
    # 使用 dot 函数进行矩阵与矩阵的乘法  
    result_dot = np.dot(A, B)  
    print(result_dot)  
    # 输出:  
    # [[19 22]  
    #  [43 50]]  
    
    # 或者使用 @ 运算符  
    result_at = A @ B  
    print(result_at)  
    # 输出与上面相同
  4. 元素级乘法(Hadamard乘积)

    如果你想要进行矩阵的元素级乘法(即每个对应位置的元素相乘),你可以直接使用*运算符(在NumPy中,这称为逐元素乘法或Hadamard乘积)。

    复制代码
    python 复制代码
    # 创建两个矩阵  
    A = np.array([[1, 2], [3, 4]])  
    B = np.array([[5, 6], [7, 8]])  
    
    # 元素级乘法  
    elementwise_product = A * B  
    print(elementwise_product)  
    # 输出:  
    # [[ 5 12]  
    #  [21 32]]

请注意,在进行矩阵乘法时,矩阵的维度必须兼容。例如,一个m x n矩阵可以与一个n x p矩阵相乘,得到一个m x p矩阵。如果维度不匹配,NumPy将抛出一个ValueError

相关推荐
Blossom.11818 分钟前
把 AI 塞进「自行车码表」——基于 MEMS 的 3D 地形预测码表
人工智能·python·深度学习·opencv·机器学习·计算机视觉·3d
蒋星熠4 小时前
区块链技术探索与应用:从密码学奇迹到产业变革引擎
python·语言模型·web3·去中心化·区块链·密码学·智能合约
DogDaoDao6 小时前
用PyTorch实现多类图像分类:从原理到实际操作
图像处理·人工智能·pytorch·python·深度学习·分类·图像分类
默归6 小时前
分治法——二分答案
python·算法
麻雀无能为力6 小时前
python自学笔记14 NumPy 线性代数
笔记·python·numpy
大学生毕业题目7 小时前
毕业项目推荐:28-基于yolov8/yolov5/yolo11的电塔危险物品检测识别系统(Python+卷积神经网络)
人工智能·python·yolo·cnn·pyqt·电塔·危险物品
岁忧8 小时前
(LeetCode 每日一题) 498. 对角线遍历 (矩阵、模拟)
java·c++·算法·leetcode·矩阵·go
程序猿小D9 小时前
【完整源码+数据集+部署教程】脑部CT图像分割系统源码和数据集:改进yolo11-CSwinTransformer
python·yolo·计算机视觉·数据集·yolo11·脑部ct图像分割
max5006009 小时前
北京大学MuMo多模态肿瘤分类模型复现与迁移学习
人工智能·python·机器学习·分类·数据挖掘·迁移学习
修一呀9 小时前
[后端快速搭建]基于 Django+DeepSeek API 快速搭建智能问答后端
后端·python·django