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

零基础上手Python数据分析 (23):NumPy 数值计算基础 - 数据分析的加速“引擎”

写在前面

在这里插入图片描述

—— 超越原生 Python 列表,解锁高性能数值计算,深入理解 Pandas 的底层依赖

在前面一系列关于 Pandas 的学习中,我们已经领略了其在数据处理和分析方面的强大威力。我们学会了使用 DataFrame 和 Series 来高效地操作表格数据。但是,你是否好奇,Pandas 为何能够如此高效地处理大规模数据?其背后隐藏着怎样的 “秘密武器”?

答案就是我们今天要深入学习的主角——NumPy (Numerical Python)

NumPy:Python 科学计算的基石

NumPy 是 Python 中用于 科学计算基础核心库。它提供了:

  1. 一个强大的 N 维数组对象 (ndarray)
  2. 用于操作这些数组的各种 高效函数 (例如数学运算、逻辑运算、形状操作、排序、选择等)。
  3. 用于线性代数、傅里叶变换和随机数生成的工具。

为什么在学习 Pandas 之后还要学习 NumPy?

你可能会问,既然 Pandas 已经那么好用了,为什么我们还要回过头来学习 NumPy? 原因主要有以下几点:

  • Pandas 的底层依赖: Pandas 的核心数据结构 Series 和 DataFrame 在底层很大程度上是建立在 NumPy 的 ndarray 之上的。理解 NumPy 的 ndarray 有助于我们更深入地理解 Pandas 的工作原理和性能特性。
  • 高性能数值计算: NumPy 的 ndarray 专为 高性能的数值计算 而设计。相比于 Python 内置的列表 (list),ndarray 在存储和处理大规模数值数据时具有显著的优势:
    • 更少的内存占用: ndarray 存储的是 同质数据类型 (所有元素类型相同),并且存储方式更紧凑。
    • 更快的计算速度: NumPy 的核心运算是用 C 语言 实现的,并且支持 向量化操作 (Vectorization),可以对整个数组进行批量操作,避免了 Python 层面低效的循环,速度远超原生 Python 代码。
  • 科学计算生态系统的基础: NumPy 是 Python 科学计算生态系统 (SciPy Stack) 的基石,许多其他重要的库,如 SciPy (科学计算库)、Matplotlib (可视化库)、Scikit-learn (机器学习库) 等,都依赖于 NumPy。掌握 NumPy 是深入学习这些库的前提。
  • 直接应用场景: 在某些数据分析场景,特别是涉及大量 数值计算、矩阵运算、线性代数 等任务时,直接使用 NumPy 可能比 Pandas 更简洁高效。

虽然本专栏将 NumPy 放在了 Pandas 之后讲解 (因为对于初学者,直接上手 Pandas 更贴近数据分析的实际应用流程),但掌握 NumPy 的核心概念和操作,对于提升你的数据分析效率、深入理解 Pandas 以及为后续学习更高级的技术打下基础,都至关重要。

本篇博客将带你深入 NumPy 的世界,重点学习:

  • NumPy 的核心数据结构:ndarray (N-维数组)
  • 创建 ndarray 的多种方法
  • ndarray 的重要属性
  • NumPy 的核心优势:向量化运算 (UFuncs)
  • ndarray 的索引与切片操作
  • 布尔索引与条件筛选

掌握 NumPy,你将拥有更强大的数值计算能力,并能更深刻地理解你所使用的 Pandas 工具!

⚙️ 一、NumPy 安装与导入

与 Pandas 和 Matplotlib 类似,如果你使用 Anaconda,NumPy 通常已经预装。 若未安装,可使用 pip 或 conda 安装:

pip install numpy
# 或者
conda install numpy

在 Python 脚本或 Jupyter Notebook 中,导入 NumPy 库,并约定俗成地将其简写为 np

import numpy as np

🔢 二、NumPy 的核心:ndarray 对象

NumPy 最核心的概念就是 ndarray (N-dimensional array),即 N 维数组。 它是一个 同质 (homogeneous) 数据类型的 多维网格

ndarray 的关键特性:

  • 维度 (Dimensions/Axes): ndarray 可以是一维、二维、三维甚至更高维度。 维度的数量称为 秩 (rank)
  • 形状 (Shape): 一个 元组 (tuple),描述了数组在 每个维度上的大小。 例如,一个 3 行 4 列的二维数组,其形状为 (3, 4)
  • 数据类型 (dtype): 数组中 所有元素的数据类型必须相同。 NumPy 支持多种数值数据类型,例如 int8, int16, int32, int64, uint8 (无符号整数), float16, float32, float64, complex64, complex128, bool, object (可以存储 Python 对象,但会失去 NumPy 的性能优势), string_, unicode_ 等。 这与 Python 列表可以包含不同类型元素的特性形成对比。
  • 固定大小 (Fixed Size): ndarray 在创建时大小是固定的。 改变数组的大小会创建一个新的数组并删除原来的数组。 这有助于提高内存效率和计算性能。

1. 创建 ndarray

有多种方法可以创建 NumPy ndarray 对象:

  • 从 Python 列表或元组创建:np.array()

    这是最常用的创建方式,可以将 Python 的列表或嵌套列表转换为 ndarray。

    # 创建一维数组
    list1 = [1, 2, 3, 4, 5]
    arr1d = np.array(list1)
    print("一维数组 arr1d:\n", arr1d)
    print("arr1d 的类型:", type(arr1d))
    print("arr1d 的数据类型:", arr1d.dtype)# 创建二维数组 (矩阵)
    list2d = [[1, 2, 3], [4, 5, 6]]
    arr2d = np.array(list2d)
    print("\n二维数组 arr2d:\n", arr2d)
    print("arr2d 的数据类型:", arr2d.dtype)# 创建指定数据类型的数组
    arr_float = np.array([1, 2, 3], dtype=np.float64) # 指定为 float64 类型
    print("\n指定数据类型的数组 arr_float:\n", arr_float)
    print("arr_float 的数据类型:", arr_float.dtype)arr_str = np.array([1, 2, 3], dtype=str) # 指定为字符串类型
    print("\n指定数据类型的数组 arr_str:\n", arr_str)
    print("arr_str 的数据类型:", arr_str.dtype)
    
  • 使用 NumPy 内置函数创建特定数组:

    • np.zeros(shape, dtype=float): 创建指定形状 shape 且所有元素都为 0 的数组。

      zeros_arr = np.zeros((2, 3)) # 创建一个 2x3 的全零浮点型数组
      print("\n全零数组 zeros_arr:\n", zeros_arr)
      
    • np.ones(shape, dtype=float): 创建指定形状 shape 且所有元素都为 1 的数组。

      o

相关文章:

  • 深度强化学习(DRL)实战:从AlphaGo到自动驾驶
  • React 文件链条
  • [论文阅读]ReAct: Synergizing Reasoning and Acting in Language Models
  • 设备接入与APP(应用程序)接入华为云iotDA平台的详细操作步骤及获取方式
  • 【动手学大模型开发】VSCode 连接远程服务器
  • Asp.Net Core 异常筛选器ExceptionFilter
  • 前端技术Ajax入门
  • 九、小白如何用Pygame制作一款跑酷类游戏(添加前进小动物作为动态障碍物)
  • WebUI可视化:第2章:技术基础准备
  • 阿里云基于本地知识库构建RAG应用 | 架构与场景
  • C++入侵检测与网络攻防之网络嗅探以及ARP攻击
  • 铃木一郎女儿是奥运会选手吗·棒球1号位
  • Ethan独立开发产品日报 | 2025-04-24
  • 1、RabbitMQ的概述笔记
  • 传统中台的重生——云原生如何重塑政务系统后端架构
  • 电子级甲基氯硅烷
  • [mysql]窗口函数
  • Java安全之URLDNS链分析
  • 论文阅读:2024 ACL ArtPrompt: ASCII Art-based Jailbreak Attacks against Aligned LLMs
  • 基于线性LDA算法对鸢尾花数据集进行分类
  • 第152次中老缅泰湄公河联合巡逻执法行动圆满结束
  • 敲定!今年将制定金融法、金融稳定法
  • 玉渊谭天丨“稀土管制让美国慌了”,美军工稀土储备仅够数月
  • 商务部:汽车流通消费改革试点正在加快推进
  • 外卖口水战四天,京东美团市值合计蒸发超千亿港元
  • 特朗普称已为俄乌问题设最后期限,届时美国态度或生变