Numpy数组间运算

数组间运算

【数组与数】的4则运算:

  • [[1, 2, 3, 2, 1, 4], [5, 6, 1, 2, 3, 1]]
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
注意:python里面的列表是这样的运算规则吗?不是的。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 我们发现a这个数组被复制了,可以参考python列表的运算,这样就对比出来一维数组和二维数组的区别了。

【数组与数组】的4则运算:

在这里插入图片描述

arr1 = np.array([[1, 2, 3, 2, 1, 4], [5, 6, 1, 2, 3, 1]])
arr2 = np.array([[1, 2, 3, 4], [3, 4, 5, 6]])

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

错误提示信息为:不能广播。
广播机制:

在这里插入图片描述

  • 需要满足的两个条件是:要运算的这两个数组要么维度上的数是相等的要么有一个维度上有1。
    在这里插入图片描述
  • 拿上图中【最后一个】解释如下:第一个维度上都是15,所以满足维度相等这个条件,第二个维度一个是3一个是1,虽然维度不相等,但是对应的位置上有1,第三个维度一个是5一个是1,虽然维度不相等,但是对应的位置上有1。最后的运算结果就是取该维度上最大的值作为最后的运算结果的维度。
    在这里插入图片描述
    在这里插入图片描述
具体演示如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 总结:最终运算后的维度也是取维度中对应位置上最大的维度值。
矩阵运算:
  • 场景:
    在这里插入图片描述
    在这里插入图片描述
思考:如何能够直接得出每个学生的成绩?
  • 什么是矩阵:
    • 矩阵,英文matrix,和array的区别矩阵必须是二维的,但是array可以实多维的。
    • np.mat()
      • 将数组转换成矩阵类型
        在这里插入图片描述
将数组转换为矩阵:

在这里插入图片描述

矩阵乘法运算:
  • 矩阵乘法的两个关键:
    • 形状改变
    • 运算规则
      在这里插入图片描述
      在这里插入图片描述
  • 矩阵乘法api:
    • np.matmul
    • np.dot
      在这里插入图片描述
      在这里插入图片描述
  • 矩阵应用场景
    • 大部分机器学习算法需要用到
具体演示如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

将数组转换为矩阵:
  • data_mat = np.mat([[80, 86], [82, 80], [85, 78], [90, 90], [86, 82], [82, 90], [78, 80], [92, 94]])
    在这里插入图片描述
    在这里插入图片描述
使用np.matmul()进行数组相乘:

在这里插入图片描述

使用np.matmul()进行矩阵相乘:

在这里插入图片描述

使用np.matmul()进行数组与矩阵相乘:

在这里插入图片描述

使用np.dot()进行数组相乘:

在这里插入图片描述

使用np.dot()进行矩阵相乘:

在这里插入图片描述

使用np.dot()进行数组与矩阵相乘:

在这里插入图片描述

相乘的特殊形式:

在这里插入图片描述

  • 错误提示信息为:不满足广播机制,不能进行运算。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
相乘的另一种形式:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

矩阵乘法运算总结:

在这里插入图片描述

  • 注意:数组是ndarray,矩阵一定是数组,而数组不一定是矩阵,因为矩阵必须是二维的,也就是矩阵是一个二维数组。
合并与分割:
  • 合并api:
    在这里插入图片描述
np.hstack():也叫做水平合并,也就是按照列进行拼接。

一维数据的水平合并:

  • a = np.array((1, 2, 3))
  • b = np.array((4, 5, 6))
    在这里插入图片描述
    在这里插入图片描述
  • 也可以:
    在这里插入图片描述
二维数据的水平合并:
  • a = np.array([[1],[2],[3]])
  • b = np.array([[4],[5],[6]])
    在这里插入图片描述
    在这里插入图片描述
  • 也可以:
    在这里插入图片描述
np.vstack():也叫做垂直合并,也就是按照行进行拼接。
一维数据的垂直合并:
  • a = np.array((1, 2, 3))
  • b = np.array((4, 5, 6))
    在这里插入图片描述
    在这里插入图片描述
  • 也可以:
    在这里插入图片描述
二维数据的垂直合并:
  • a = np.array([[1],[2],[3]])
  • b = np.array([[4],[5],[6]])
    在这里插入图片描述
    在这里插入图片描述
  • 也可以:
    在这里插入图片描述
np.concatenate():即可以水平合并又可以垂直合并。
  • a = np.array([[1, 2], [3, 4]])
  • b = np.array([[5, 6]])
    在这里插入图片描述
axis=0的时候,按照数组的行方向拼接在一起.

在这里插入图片描述

  • 也可以:
    在这里插入图片描述
  • 默认是axis=0。
    在这里插入图片描述
axis=1的时候,按照数组的列方向拼接在一起.

在这里插入图片描述

  • 也可以:
    在这里插入图片描述
  • 如果b不进行转置的时候就会报错。
    在这里插入图片描述

案例:将前2只股票的前4天数据和后3只股票的前4天数据进行合并。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 此种情况就不能按照列进行拼接在一起了:
    在这里插入图片描述
    在这里插入图片描述
  • 稍微将数据进行一下变换:
    在这里插入图片描述
  • 按行方向进行拼接:
    在这里插入图片描述
  • 按列方向进行拼接:
    在这里插入图片描述

分割api

在这里插入图片描述
在这里插入图片描述

IO操作:

问题:

  • 大多数数据并不是我们自己构造的,而是存在文件当中,需要我们用工具获取。但是Numpy其实并不适合用来读取和处理数据,因此我们这里了解相关api,以及numpy不方便的地方即可。
numpy读取数据:

在这里插入图片描述
在这里插入图片描述

  • 因为csv文件是以逗号进行分隔的,所以,第二个参数的值为逗号。
    在这里插入图片描述
(了解)数据处理入门:
什么是缺失值?

在这里插入图片描述

如何处理缺失值?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

### NumPy 数组运算教程 NumPy 是 Python 中用于科学计算的核心库,其主要功能围绕 N 维数组对象展开。通过 NumPy 的矢量化特性,可以实现高效的批量运算,无需显式编写循环结构。 #### 1. 大小相等的数组运算 当两个 NumPy 数组具有相同的形状时,可以直接对它们进行逐元素的操作。这种操作方式被称为矢量化 (vectorization),能够显著提升性能并简化代码逻辑[^1]。 ```python import numpy as np a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) addition = a + b # 加法 subtraction = a - b # 减法 multiplication = a * b # 乘法 division = a / b # 除法 print(addition) # 输出: [5 7 9] print(subtraction) # 输出: [-3 -3 -3] print(multiplication) # 输出: [4 10 18] print(division) # 输出: [0.25 0.4 0.5 ] ``` #### 2. 数组与标量的运算 除了数组运算外,还可以将一个标量应用于整个数组。在这种情况下,标量会广播到数组的每一个元素上。 ```python scalar_addition = a + 10 # 将标量加到每个元素 scalar_multiplication = a * 2 # 将标量乘以每个元素 print(scalar_addition) # 输出: [11 12 13] print(scalar_multiplication) # 输出: [2 4 6] ``` #### 3. 常见数学函数的应用 NumPy 提供了大量的内置数学函数,这些函数支持直接作用于数组上的每一种元素。常见的例子包括三角函数、指数函数和对数函数等[^2]。 ```python c = np.array([np.pi/2, 0, np.pi]) sin_values = np.sin(c) # 计算正弦值 exp_values = np.exp(a) # 计算自然指数 log_values = np.log(np.abs(b)) # 对绝对值取自然对数 print(sin_values) # 输出: [1. 0. 1.2246468e-16] print(exp_values) # 输出: [ 2.71828183 7.3890561 20.08553692] print(log_values) # 输出: [1.38629436 0. 1.79175947] ``` #### 4. 广播机制 即使数组的形状不完全相同,在某些条件下仍然可以通过 **广播** 来完成运算。这使得不同维度或大小的数组也可以相互配合工作[^3]。 ```python d = np.array([[1], [2]]) e = np.array([3, 4]) broadcast_result = d + e print(d.shape) # 输出: (2, 1) print(e.shape) # 输出: (2,) print(broadcast_result) # 输出: [[4 5] [5 6]] ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值