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

NumPy创建多维数组教程 - Python科学计算基础指南

NumPy多维数组创建教程

掌握高效构建和操作多维数组的核心技术,提升Python科学计算能力

NumPy数组简介

NumPy是Python科学计算的核心库,提供了高性能的多维数组对象ndarray。与Python原生列表相比,NumPy数组具有以下优势:

  • 更紧凑的内存使用
  • 更快的执行速度(向量化操作)
  • 丰富的数学函数库
  • 便捷的多维数据操作

在数据科学、机器学习和科学计算领域,NumPy数组是处理数值数据的标准工具。本教程将重点介绍如何创建和操作多维数组。

创建多维数组

1. 从Python列表创建

使用np.array()函数是最直接的创建方式:

import numpy as np

# 创建一维数组
arr1d = np.array([1, 2, 3, 4, 5])

# 创建二维数组
arr2d = np.array([[1, 2, 3], [4, 5, 6]])

# 创建三维数组
arr3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])

2. 创建全零数组

使用np.zeros()创建指定形状的全零数组:

# 创建3x3的二维全零数组
zeros_2d = np.zeros((3, 3))

# 创建2x3x4的三维全零数组
zeros_3d = np.zeros((2, 3, 4))

3. 创建全一数组

使用np.ones()创建指定形状的全一数组:

# 创建4x4的二维全一数组
ones_2d = np.ones((4, 4))

# 创建2x2x2的三维全一数组
ones_3d = np.ones((2, 2, 2))

特殊数组创建

1. 创建单位矩阵

使用np.eye()np.identity()创建单位矩阵:

# 创建3x3单位矩阵
identity_matrix = np.eye(3)

# 另一种方式
identity_matrix2 = np.identity(4)

2. 创建对角矩阵

使用np.diag()创建对角矩阵:

# 创建对角线为[1,2,3]的矩阵
diag_matrix = np.diag([1, 2, 3])

3. 创建等差数列

使用np.arange()np.linspace()创建等差数列:

# 创建0-9的数组
arr1 = np.arange(10)

# 创建5-50,步长为5的数组
arr2 = np.arange(5, 55, 5)

# 创建0-10之间等间隔的5个点
arr3 = np.linspace(0, 10, 5)  # [0, 2.5, 5, 7.5, 10]

4. 创建随机数组

使用np.random模块创建随机数组:

# 创建2x3的[0,1)区间均匀分布数组
rand_arr = np.random.rand(2, 3)

# 创建3x3的标准正态分布数组
randn_arr = np.random.randn(3, 3)

# 创建1-100之间的3x3随机整数数组
randint_arr = np.random.randint(1, 100, size=(3, 3))

数组重塑技巧

1. 改变数组形状

使用reshape()方法改变数组维度:

# 创建一维数组
arr = np.arange(12)

# 重塑为3x4二维数组
arr_2d = arr.reshape(3, 4)

# 重塑为2x2x3三维数组
arr_3d = arr.reshape(2, 2, 3)

2. 自动推断维度

使用-1自动计算维度大小:

# 自动计算行数
arr = np.arange(20)
arr_4col = arr.reshape(-1, 4)  # 5行4列

# 自动计算列数
arr_5row = arr.reshape(5, -1)  # 5行4列

3. 展平多维数组

使用flatten()ravel()将多维数组转为一维:

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

# 使用flatten方法(返回拷贝)
flat_arr = arr_2d.flatten()

# 使用ravel方法(返回视图)
ravel_arr = arr_2d.ravel()

数组基本操作

1. 数组索引

NumPy支持多种索引方式:

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 获取单个元素
print(arr[1, 2])  # 输出: 6

# 获取整行
print(arr[1])     # 输出: [4, 5, 6]

# 获取整列
print(arr[:, 1])  # 输出: [2, 5, 8]

2. 数组切片

切片操作与Python列表类似:

# 获取前两行
print(arr[:2])

# 获取最后两列
print(arr[:, -2:])

# 获取子矩阵
print(arr[1:, 1:])

3. 数组运算

NumPy支持向量化运算:

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

# 逐元素加法
print(a + b)  # [5, 7, 9]

# 逐元素乘法
print(a * b)  # [4, 10, 18]

# 矩阵乘法
matrix_a = np.array([[1, 2], [3, 4]])
matrix_b = np.array([[5, 6], [7, 8]])
print(np.dot(matrix_a, matrix_b))

总结

掌握NumPy多维数组的创建和操作是Python科学计算的基础。关键点包括:

  • 使用np.array()从Python列表创建数组
  • 利用np.zeros()np.ones()创建特殊数组
  • 使用reshape()改变数组维度
  • 熟练运用索引和切片操作
  • 利用向量化运算提高效率

NumPy的多维数组为数据科学和机器学习提供了强大的基础数据结构,值得深入学习掌握。

发表评论