【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.1 从零搭建NumPy环境:安装指南与初体验
1. 从零搭建NumPy环境:安装指南与初体验
NumPy核心能力图解(架构图)
NumPy 是 Python 中用于科学计算的核心库,它提供了高效的多维数组对象以及用于处理这些数组的各种操作。NumPy 的核心能力可以概括为以下几个方面:
- 高效数组操作:NumPy 数组(
ndarray
)比 Python 列表更高效,支持向量化操作。 - 数学函数:提供了丰富的数学函数,如三角函数、指数函数、对数函数等。
- 线性代数:支持矩阵运算、特征值分解、奇异值分解等。
- 随机数生成:提供了多种随机数生成器,用于模拟数据等。
- 广播机制:支持不同形状的数组之间的运算。
- 文件读写:支持多种文件格式的读写操作,如
.npy
、.npz
等。 - 傅里叶变换:支持频域和时域之间的转换。
- 集合操作:支持集合的交集、并集、差集等操作。
下面是 NumPy 的架构图:
Anaconda/Pip双环境安装指南(含版本选择建议)
NumPy 可以通过多种方式安装,其中最常用的两种方式是使用 Anaconda 和 Pip。下面我们将详细介绍这两种方式的安装步骤,并提供版本选择建议。
1.1 使用 Anaconda 安装 NumPy
步骤 1:下载 Anaconda
首先,访问 Anaconda 官方网站并下载最新版本的 Anaconda。Anaconda 为不同的操作系统提供了不同的安装包,确保选择与你当前操作系统相匹配的版本。
- Windows:https://www.anaconda.com/products/distribution#download-section
- Mac:https://www.anaconda.com/products/distribution#download-section
- Linux:https://www.anaconda.com/products/distribution#download-section
步骤 2:安装 Anaconda
按照下载的安装包中的说明进行安装。安装过程中,建议选择默认选项,特别是将 Anaconda 添加到系统路径中。
步骤 3:创建并激活环境
打开 Anaconda Prompt(Windows)或终端(Mac/Linux),创建一个新的环境并激活它。
conda create -n numpy_env python=3.9 # 创建名为 numpy_env 的环境,并指定 Python 版本为 3.9
conda activate numpy_env # 激活环境
步骤 4:安装 NumPy
在激活的环境中,使用以下命令安装 NumPy:
conda install numpy # 安装 NumPy
1.2 使用 Pip 安装 NumPy
步骤 1:安装 Python
确保你的系统已经安装了 Python。你可以从 Python 官方网站下载并安装最新版本的 Python。
- Windows:https://www.python.org/downloads/windows/
- Mac:https://www.python.org/downloads/macos/
- Linux:大多数 Linux 发行版已经预装了 Python,如果没有,可以使用包管理器安装。
步骤 2:安装 Pip
大多数情况下,Python 安装时会自带 Pip。你可以通过以下命令检查 Pip 是否已安装:
python -m pip --version # 检查 Pip 版本
如果没有安装,可以使用以下命令安装:
python -m ensurepip --upgrade # 安装并升级 Pip
步骤 3:创建并激活虚拟环境
推荐使用虚拟环境来管理 Python 项目依赖。你可以使用 venv
模块创建虚拟环境。
python -m venv numpy_env # 创建名为 numpy_env 的虚拟环境
source numpy_env/bin/activate # 激活环境(Linux/Mac)
numpy_env\Scripts\activate # 激活环境(Windows)
步骤 4:安装 NumPy
在激活的虚拟环境中,使用以下命令安装 NumPy:
pip install numpy # 安装 NumPy
三平台安装步骤对比表格
步骤 | Anaconda | Pip |
---|---|---|
1. 下载 | 访问 Anaconda 官方网站下载安装包 | 确保系统已安装 Python |
2. 安装 | 按照安装包说明进行安装 | 从 Python 官方网站下载并安装 |
3. 创建环境 | conda create -n numpy_env python=3.9 | python -m venv numpy_env |
4. 激活环境 | conda activate numpy_env | source numpy_env/bin/activate (Linux/Mac)numpy_env\Scripts\activate (Windows) |
5. 安装 NumPy | conda install numpy | pip install numpy |
验证安装的3种方法
1.3.1 终端命令验证
方法 1:检查 NumPy 版本
python -c "import numpy as np; print(np.__version__)" # 检查 NumPy 版本
方法 2:列出已安装的包
conda list numpy # 列出 Anaconda 环境中已安装的 NumPy 包
pip list | grep numpy # 列出 Pip 环境中已安装的 NumPy 包
1.3.2 Python 代码验证
方法 3:运行简单的 NumPy 代码
import numpy as np
# 创建一个 3x3 的数组
array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print("创建的 3x3 数组:")
print(array)
# 计算数组的平均值
mean_value = np.mean(array)
print("数组的平均值:", mean_value)
注释:
# 导入 NumPy 库,并将其别名为 np
import numpy as np
# 创建一个 3x3 的数组
# np.array 是 NumPy 中用于创建数组的函数
# 传入一个二维列表,其中每个子列表代表数组的一行
array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print("创建的 3x3 数组:") # 打印数组
print(array)
# 计算数组的平均值
# np.mean 是 NumPy 中用于计算平均值的函数
# 传入数组作为参数
mean_value = np.mean(array)
print("数组的平均值:", mean_value) # 打印平均值
常见安装报错解决方案(附错误截图示例)
问题 1:Pip 安装时报错
错误示例:
ERROR: Could not find a version that satisfies the requirement numpy (from versions: none)
ERROR: No matching distribution found for numpy
解决方案:
-
确保你的网络连接正常。
-
升级 Pip 到最新版本:
pip install --upgrade pip
-
如果仍然报错,可以尝试使用国内的镜像源:
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
问题 2:Anaconda 安装时报错
错误示例:
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.
解决方案:
-
重启 Anaconda Prompt 或终端。
-
清除缓存并重新安装:
conda clean --all conda install numpy
-
如果仍然报错,可以尝试使用国内的镜像源:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda install numpy
问题 3:虚拟环境无法激活
错误示例:
source: command not found
解决方案:
- 确保你使用的是正确的激活命令。在 Windows 上使用
numpy_env\Scripts\activate
,在 Linux/Mac 上使用source numpy_env/bin/activate
。 - 检查虚拟环境目录是否存在,并且路径正确。
第一个NumPy程序:数组创建与基础运算
1.4.1 创建数组
NumPy 提供了多种创建数组的方法,包括从列表创建、从文件读取、随机生成等。下面我们将介绍最常见的几种方法。
1. 从列表创建数组
import numpy as np
# 从列表创建一维数组
one_d_array = np.array([1, 2, 3, 4, 5])
print("一维数组:")
print(one_d_array)
# 从列表创建二维数组
two_d_array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print("二维数组:")
print(two_d_array)
注释:
# 导入 NumPy 库,并将其别名为 np
import numpy as np
# 从列表创建一维数组
# np.array 是 NumPy 中用于创建数组的函数
# 传入一个一维列表,创建一个一维数组
one_d_array = np.array([1, 2, 3, 4, 5])
print("一维数组:") # 打印一维数组
print(one_d_array)
# 从列表创建二维数组
# 传入一个二维列表,其中每个子列表代表数组的一行
two_d_array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print("二维数组:") # 打印二维数组
print(two_d_array)
2. 从文件读取数组
NumPy 支持从多种文件格式读取数组,最常用的是 .npy
和 .npz
文件。
import numpy as np
# 从 .npy 文件读取数组
array_from_npy = np.load('array.npy')
print("从 .npy 文件读取的数组:")
print(array_from_npy)
# 从 .npz 文件读取数组
data = np.load('data.npz')
array1 = data['array1']
array2 = data['array2']
print("从 .npz 文件读取的数组1:")
print(array1)
print("从 .npz 文件读取的数组2:")
print(array2)
注释:
# 导入 NumPy 库,并将其别名为 np
import numpy as np
# 从 .npy 文件读取数组
# np.load 是 NumPy 中用于从文件加载数组的函数
# 传入文件路径作为参数
array_from_npy = np.load('array.npy')
print("从 .npy 文件读取的数组:") # 打印从 .npy 文件读取的数组
print(array_from_npy)
# 从 .npz 文件读取数组
# .npz 文件可以存储多个数组
# 使用 np.load 读取 .npz 文件
data = np.load('data.npz')
# 通过键值访问存储在 .npz 文件中的数组
array1 = data['array1']
array2 = data['array2']
print("从 .npz 文件读取的数组1:") # 打印数组1
print(array1)
print("从 .npz 文件读取的数组2:") # 打印数组2
print(array2)
3. 随机生成数组
import numpy as np
# 生成一个 3x3 的随机数组,元素值在 0 到 1 之间
random_array = np.random.rand(3, 3)
print("随机生成的 3x3 数组:")
print(random_array)
# 生成一个 3x3 的随机整数数组,元素值在 1 到 10 之间
random_int_array = np.random.randint(1, 10, (3, 3))
print("随机生成的 3x3 整数数组:")
print(random_int_array)
注释:
# 导入 NumPy 库,并将其别名为 np
import numpy as np
# 生成一个 3x3 的随机数组,元素值在 0 到 1 之间
# np.random.rand 是 NumPy 中用于生成随机数组的函数
# 传入数组的形状作为参数
random_array = np.random.rand(3, 3)
print("随机生成的 3x3 数组:") # 打印随机数组
print(random_array)
# 生成一个 3x3 的随机整数数组,元素值在 1 到 10 之间
# np.random.randint 是 NumPy 中用于生成随机整数数组的函数
# 传入最小值、最大值和数组形状作为参数
random_int_array = np.random.randint(1, 10, (3, 3))
print("随机生成的 3x3 整数数组:") # 打印随机整数数组
print(random_int_array)
1.4.2 基础运算
NumPy 提供了丰富的数组运算功能,包括加法、减法、乘法、除法、矩阵乘法等。下面我们将介绍一些常见的基础运算。
1. 数组加法
import numpy as np
# 创建两个 3x3 的数组
array1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]])
# 计算两个数组的加法
sum_array = array1 + array2
print("数组加法:")
print(sum_array)
注释:
# 导入 NumPy 库,并将其别名为 np
import numpy as np
# 创建两个 3x3 的数组
# np.array 是 NumPy 中用于创建数组的函数
# 传入二维列表,每个子列表代表数组的一行
array1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]])
# 计算两个数组的加法
# NumPy 支持直接使用 + 运算符进行数组加法
sum_array = array1 + array2
print("数组加法:") # 打印结果
print(sum_array)
2. 数组减法
import numpy as np
# 创建两个 3x3 的数组
array1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]])
# 计算两个数组的减法
diff_array = array1 - array2
print("数组减法:")
print(diff_array)
注释:
# 导入 NumPy 库,并将其别名为 np
import numpy as np
# 创建两个 3x3 的数组
# np.array 是 NumPy 中用于创建数组的函数
# 传入二维列表,每个子列表代表数组的一行
array1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]])
# 计算两个数组的减法
# NumPy 支持直接使用 - 运算符进行数组减法
diff_array = array1 - array2
print("数组减法:") # 打印结果
print(diff_array)
3. 数组乘法
import numpy as np
# 创建两个 3x3 的数组
array1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]])
# 计算两个数组的逐元素乘法
elementwise_product = array1 * array2
print("逐元素乘法:")
print(elementwise_product)
# 计算两个数组的矩阵乘法
matrix_product = np.dot(array1, array2)
print("矩阵乘法:")
print(matrix_product)
注释:
# 导入 NumPy 库,并将其别名为 np
import numpy as np
# 创建两个 3x3 的数组
# np.array 是 NumPy 中用于创建数组的函数
# 传入二维列表,每个子列表代表数组的一行
array1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]])
# 计算两个数组的逐元素乘法
# NumPy 支持直接使用 * 运算符进行数组的逐元素乘法
elementwise_product = array1 * array2
print("逐元素乘法:") # 打印结果
print(elementwise_product)
# 计算两个数组的矩阵乘法
# np.dot 是 NumPy 中用于计算矩阵乘法的函数
# 传入两个数组作为参数
matrix_product = np.dot(array1, array2)
print("矩阵乘法:") # 打印结果
print(matrix_product)
4. 数组除法
import numpy as np
# 创建两个 3x3 的数组
array1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]])
# 计算两个数组的逐元素除法
elementwise_division = array1 / array2
print("逐元素除法:")
print(elementwise_division)
注释:
# 导入 NumPy 库,并将其别名为 np
import numpy as np
# 创建两个 3x3 的数组
# np.array 是 NumPy 中用于创建数组的函数
# 传入二维列表,每个子列表代表数组的一行
array1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array2 = np.array([[9, 8, 7], [6, 5, 4], [3, 2, 1]])
# 计算两个数组的逐元素除法
# NumPy 支持直接使用 / 运算符进行数组的逐元素除法
elementwise_division = array1 / array2
print("逐元素除法:") # 打印结果
print(elementwise_division)
5. 数组转置
import numpy as np
# 创建一个 3x3 的数组
array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 计算数组的转置
transposed_array = array.T
print("数组转置:")
print(transposed_array)
注释:
# 导入 NumPy 库,并将其别名为 np
import numpy as np
# 创建一个 3x3 的数组
# np.array 是 NumPy 中用于创建数组的函数
# 传入二维列表,每个子列表代表数组的一行
array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 计算数组的转置
# .T 是 NumPy 数组的一个属性,用于获取数组的转置
transposed_array = array.T
print("数组转置:") # 打印结果
print(transposed_array)
6. 数组重塑
import numpy as np
# 创建一个 1x9 的数组
array = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
# 将数组重塑为 3x3 的数组
reshaped_array = array.reshape(3, 3)
print("重塑后的数组:")
print(reshaped_array)
注释:
# 导入 NumPy 库,并将其别名为 np
import numpy as np
# 创建一个 1x9 的数组
# np.array 是 NumPy 中用于创建数组的函数
# 传入一个一维列表
array = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
# 将数组重塑为 3x3 的数组
# .reshape 是 NumPy 数组的一个方法,用于改变数组的形状
# 传入新的形状作为参数
reshaped_array = array.reshape(3, 3)
print("重塑后的数组:") # 打印结果
print(reshaped_array)
参考文献或资料
参考资料名称 | 链接 |
---|---|
NumPy 官方文档 | https://numpy.org/doc/ |
Anaconda 官方文档 | https://docs.anaconda.com/ |
Pip 官方文档 | https://pip.pypa.io/en/stable/ |
Python 官方文档 | https://docs.python.org/3/ |
NumPy 教程 | https://www.datacamp.com/community/tutorials/python-numpy-tutorial |
NumPy 入门指南 | https://numpy.org/devdocs/user/quickstart.html |
NumPy 环境搭建教程 | https://www.geeksforgeeks.org/how-to-install-numpy-on-windows/ |
NumPy 学习笔记 | https://www.jianshu.com/p/4e4d5c1e7e8b |
NumPy 初学者教程 | https://github.com/rougier/numpy-100 |
NumPy 常见问题解答 | https://numpy.org/doc/stable/user/troubleshooting.html |
NumPy 源码分析 | https://github.com/numpy/numpy |
NumPy 速查表 | https://www.kaggle.com/learn/overview |
NumPy 实战案例 | https://www.tensorflow.org/tutorials/quickstart/beginner |
NumPy 书籍推荐 | https://www.springer.com/gp/book/9781484242452 |
NumPy 视频教程 | https://www.youtube.com/watch?v=QUT1VHiLmmI |
NumPy 交互式学习 | https://colab.research.google.com/ |
希望这篇文章能帮助你成功地搭建 NumPy 环境并进行初体验。这篇文章包含了详细的原理介绍、代码示例、源码注释以及案例等。希望这对您有帮助。如果有任何问题请随私信或评论告诉我。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)