Numpy零基础vip精讲课程(上篇)

Numpy零基础vip精讲课程(上篇)

解决方案goocz2025-03-05 11:58:1742A+A-

1. VSCode 环境配置

注意:假设已安装 Python 和 VSCode,未安装可通过 Python官网 和 VSCode官网 下载。

步骤 1:创建 Python 虚拟环境
虚拟环境能隔离项目依赖,避免版本冲突。

  • 在 VSCode 中打开终端(快捷键 Ctrl + ~),输入以下命令:
  # 创建名为 venv 的虚拟环境
  python -m venv venv
  # 激活虚拟环境(Windows)
  .\venv\Scripts\activate

激活后终端会显示 (venv),表示当前处于虚拟环境中。

步骤 2:安装 Numpy
在激活的虚拟环境中运行:

pip install numpy

验证安装是否成功:

# 在 VSCode 中新建一个 .py 文件,输入以下代码并运行
import numpy as np
print(np.__version__)  # 输出类似:1.24.3

步骤 3(可选):配置 Jupyter Notebook
适合喜欢交互式学习的用户:

pip install jupyter

在 VSCode 中新建 .ipynb 文件,选择内核为虚拟环境中的 Python。


2. Numpy 核心概念

2.1 什么是数组?

  • Python 列表(List):灵活但效率低,适合存储不同类型的数据。
  • Numpy 数组(Array):固定类型、内存连续,适合高效数值计算。

示例

import numpy as np

# 列表可以混合类型
my_list = [1, 2, "hello"]
# 数组会强制统一类型
my_array = np.array([1, 2, 3])  # 自动转为整数类型
print(my_array.dtype)  # 输出:int32

2.2 数组维度与形状(shape)

  • 维度:一维数组(向量)、二维数组(矩阵)、三维数组(立方体)。
  • 形状:描述每一维的长度,例如 (3, 2) 表示 3 行 2 列的矩阵。

示例

arr = np.array([[1, 2], [3, 4], [5, 6]])
print(arr.shape)  # 输出:(3, 2)

3. 数组创建与基础操作

3.1 手动创建数组

# 从列表创建
arr1 = np.array([1, 2, 3])          # 一维数组
arr2 = np.array([[1, 2], [3, 4]])   # 二维数组

# 创建全0数组
zeros = np.zeros((2, 3))            # 2行3列的0矩阵

# 创建全1数组
ones = np.ones((3,))                # 一维数组,3个1

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

3.2 生成序列

# 类似 range,生成 [0, 10) 的整数,步长为2
arr_range = np.arange(0, 10, 2)     # 输出:[0 2 4 6 8]

# 生成等间隔的5个数,范围 [0, 1]
arr_linspace = np.linspace(0, 1, 5) # 输出:[0.   0.25 0.5  0.75 1.  ]

3.3 形状操作

arr = np.arange(6)                  # 一维数组 [0 1 2 3 4 5]

# 转换为2x3矩阵
reshaped = arr.reshape(2, 3)        # 形状 (2, 3)
# [[0 1 2]
#  [3 4 5]]

# 展平回一维
flattened = reshaped.flatten()      # 输出:[0 1 2 3 4 5]

# 转置(行变列,列变行)
transposed = reshaped.T             # 形状 (3, 2)
# [[0 3]
#  [1 4]
#  [2 5]]

3.4 索引与切片

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

# 获取单个元素(第0行第1列)
print(arr[0, 1])                   # 输出:2

# 切片(第1行的所有列)
print(arr[1, :])                   # 输出:[4 5 6]

# 修改元素
arr[1, 2] = 99                     # 数组变为 [[1, 2, 3], [4, 5, 99]]

4. 实战小项目

项目 1:学生成绩统计分析

# 模拟5个学生的3门课成绩
scores = np.array([
    [85, 90, 78],
    [92, 88, 76],
    [75, 80, 95],
    [60, 70, 65],
    [98, 99, 100]
])

# 计算每门课的平均分
mean_per_subject = np.mean(scores, axis=0)
print("平均分:", mean_per_subject)  # 输出:[82.  85.4 82.8]

# 找到最高分和最低分
max_score = np.max(scores)
min_score = np.min(scores)
print(f"最高分:{max_score}, 最低分:{min_score}")  # 最高分:100, 最低分:60

项目 2:简单图像处理
用数组模拟黑白图像的像素矩阵(0=黑,255=白):

# 创建一个 5x5 的“图像”
image = np.array([
    [0, 50, 100, 150, 200],
    [255, 200, 150, 100, 50],
    [0, 50, 100, 150, 200],
    [255, 200, 150, 100, 50],
    [0, 50, 100, 150, 200]
])

# 反转颜色(黑白互换)
inverted_image = 255 - image

# 裁剪中间 3x3 区域
cropped = image[1:4, 1:4]  # 行1到3,列1到3

上篇总结

  • 掌握内容:环境搭建、数组创建、形状操作、索引与切片。
  • 重点提示:数组的 shape 和 dtype 是核心属性。使用 reshape 时元素总数需一致(如6个元素可转为2x3,但不能转为3x3)。
  • 练习任务:用 np.arange(12) 创建一个 3x4 的数组,并计算其转置矩阵。生成一个长度为10的等差数列,范围从-5到5。

接下来可以学习中篇《进阶运算与数据处理》!需要提供代码答案或进一步解释吗?

点击这里复制本文地址 以上内容由goocz整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

果子教程网 © All Rights Reserved.  蜀ICP备2024111239号-5