Python技巧:二维列表 和 二维矩阵 的区别

np.vstack 是 NumPy 中的一个函数,用于将多个数组沿垂直方向(行方向)堆叠。它可以处理 二维列表二维矩阵,但它们之间有一些关键区别。以下是详细说明:


1. 二维列表

  • 定义:

    • 二维列表是 Python 原生的数据结构,是一个列表的列表。
    • 例如:
      list_2d = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
      
    • 它是一个嵌套的列表结构,每个子列表代表一行数据。
  • 特点:

    • 不是 NumPy 数组,因此不支持 NumPy 的向量化操作(如广播、数学运算等)。
    • 灵活性高,可以存储不同类型的数据(如整数、字符串等)。
    • 内存效率较低,适合小规模数据。
  • 使用 np.vstack:

    • np.vstack 可以将多个二维列表堆叠成一个二维数组。
    • 例如:
      import numpy as np
      list_2d_1 = [[1, 2, 3], [4, 5, 6]]
      list_2d_2 = [[7, 8, 9], [10, 11, 12]]
      result = np.vstack((list_2d_1, list_2d_2))
      print(result)
      
      输出:
      [[ 1  2  3]
       [ 4  5  6]
       [ 7  8  9]
       [10 11 12]]
      

2. 二维矩阵

  • 定义:

    • 二维矩阵是 NumPy 的 ndarray 对象,是一个二维数组。
    • 例如:
      matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
      
    • 它是一个连续的内存块,支持高效的数值计算。
  • 特点:

    • 是 NumPy 数组,支持向量化操作(如广播、数学运算等)。
    • 内存效率高,适合大规模数值计算。
    • 所有元素必须是相同的数据类型。
  • 使用 np.vstack:

    • np.vstack 可以将多个二维矩阵堆叠成一个更大的二维矩阵。
    • 例如:
      import numpy as np
      matrix_1 = np.array([[1, 2, 3], [4, 5, 6]])
      matrix_2 = np.array([[7, 8, 9], [10, 11, 12]])
      result = np.vstack((matrix_1, matrix_2))
      print(result)
      
      输出:
      [[ 1  2  3]
       [ 4  5  6]
       [ 7  8  9]
       [10 11 12]]
      

3. np.vstack 的区别

  • 输入类型:

    • np.vstack 可以接受二维列表或二维矩阵作为输入。
    • 如果输入是二维列表,np.vstack 会将其转换为 NumPy 数组后再堆叠。
    • 如果输入是二维矩阵,np.vstack 直接进行堆叠。
  • 输出类型:

    • 无论输入是二维列表还是二维矩阵,np.vstack 的输出始终是 NumPy 二维数组(ndarray)。
  • 性能:

    • 对于二维矩阵,np.vstack 的性能更高,因为 NumPy 数组是连续的内存块。
    • 对于二维列表,np.vstack 需要先将其转换为 NumPy 数组,因此性能稍低。

4. 总结

特性二维列表二维矩阵(NumPy 数组)
定义列表的列表NumPy 的 ndarray 对象
数据类型可以存储不同类型的数据所有元素必须是相同的数据类型
内存效率较低较高
数值计算支持不支持向量化操作支持向量化操作(如广播、数学运算)
np.vstack 输入可以接受可以接受
np.vstack 输出转换为 NumPy 数组后堆叠直接堆叠

示例对比

输入为二维列表
import numpy as np
list_2d_1 = [[1, 2, 3], [4, 5, 6]]
list_2d_2 = [[7, 8, 9], [10, 11, 12]]
result = np.vstack((list_2d_1, list_2d_2))
print(result)

输出:

[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]
输入为二维矩阵
import numpy as np
matrix_1 = np.array([[1, 2, 3], [4, 5, 6]])
matrix_2 = np.array([[7, 8, 9], [10, 11, 12]])
result = np.vstack((matrix_1, matrix_2))
print(result)

输出:

[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]

总结

  • 二维列表 是 Python 原生的数据结构,灵活但效率较低。
  • 二维矩阵 是 NumPy 的 ndarray,适合高效的数值计算。
  • np.vstack 可以处理两者,但输入为二维矩阵时性能更高。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ankie(资深技术项目经理)

打赏就是赞赏,感谢你的认可!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值