NumPy 的入门指南,专为 Python 新手设计,帮助你快速掌握 NumPy 的核心概念和常用函数:

一、NumPy 是什么?

NumPy(Numerical Python) 是 Python 中用于科学计算的核心库,专注于高效的多维数组(ndarray)操作。

  • 核心优势

    • 提供高性能的数组对象(比 Python 原生列表快 50 倍以上)。

    • 支持向量化运算(无需编写循环即可批量处理数据)。

    • 是众多科学库(如 Pandas、Matplotlib、Scikit-learn)的基础。


二、为什么需要 NumPy?

假设要计算两个长度为 100 万的列表的逐元素加法:

  • Python 原生列表:需要手动编写循环,效率低。

  • NumPy 数组:一行代码完成,底层用 C 实现,速度极快。

import numpy as np

# Python 原生列表(慢)
list1 = [i for i in range(1, 1000001)]
list2 = [i for i in range(1000001, 2000001)]
result = [a + b for a, b in zip(list1, list2)]

# NumPy 数组(快)
arr1 = np.arange(1, 1000001)
arr2 = np.arange(1000001, 2000001)
result = arr1 + arr2  # 直接相加,无需循环

三、NumPy 核心:多维数组(ndarray)

1. 创建数组
方法 示例 输出
从列表转换 np.array([1, 2, 3]) array([1, 2, 3])
全零数组 np.zeros((2, 3)) 2行3列的全零矩阵
全一数组 np.ones((3,)) 长度为3的一维数组
等差数列 np.arange(0, 10, 2) array([0, 2, 4, 6, 8])
随机数组 np.random.rand(2, 2) 2x2的随机数矩阵(0~1)
2. 数组属性
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.shape)   # 形状:(2, 3)
print(arr.ndim)    # 维度:2(二维数组)
print(arr.dtype)   # 数据类型:int32 或 float64

四、NumPy 常用函数

1. 数组操作
函数/方法 功能 示例
索引和切片 访问或修改元素 arr[0, 1] = 10
reshape() 改变数组形状 arr.reshape(3, 2)
concatenate() 合并数组 np.concatenate([arr1, arr2])
transpose() 转置矩阵 arr.T
2. 数学运算
运算 说明 示例
逐元素加减乘除 +-*/ arr1 + arr2
矩阵乘法 @ 或 np.dot() arr1 @ arr2
平方根、指数等 np.sqrt()np.exp() np.sqrt(arr)
3. 统计与聚合
函数 功能 示例
sum() / mean() 求和 / 平均值 arr.sum(axis=0)
max() / min() 最大值 / 最小值 arr.max()
std() / var() 标准差 / 方差 np.std(arr)

五、实战示例:学生成绩分析

import numpy as np

# 生成5名学生3门科目的成绩(0~100分)
scores = np.random.randint(0, 101, size=(5, 3))
print("原始成绩表:\n", scores)

# 计算每科平均分
mean_per_subject = scores.mean(axis=0)
print("每科平均分:", mean_per_subject)

# 找出总分最高的学生
total_scores = scores.sum(axis=1)
max_index = total_scores.argmax()
print("最高分学生索引:", max_index)

输出

原始成绩表:
 [[83 45 90]
 [71 96 58]
 [12 76 55]
 [87 89 63]
 [ 2 30 18]]
每科平均分: [51.  67.2 56.8]
最高分学生索引: 3

你可能感兴趣的:(numpy,python,开发语言)