Python NumPy入门指南:数据处理科学计算的瑞士军刀

Python NumPy入门指南:数据处理科学计算的瑞士军刀
作者:唐叔在学习
专栏:唐叔学python
标签:Python NumPy、数据分析、科学计算、机器学习基础、数组操作、Python数据处理、人工智能基础、Python编程

摘要

NumPy是Python科学计算的基础库,提供了高性能的多维数组对象和工具。本文唐叔将带你从零开始了解NumPy的核心概念、常用操作和实际应用场景,助你在数据分析、机器学习等领域快速上手。无论你是Python初学者还是想提升数据处理能力,这篇文章都将成为你的实用指南。

文章目录


一、NumPy是什么?为什么它如此重要?

各位小伙伴们好,我是唐叔!今天我们要聊的是Python科学计算领域的一个重量级选手——NumPy。

简单来说,NumPy(Numerical Python)是Python中用于科学计算的基础包。它提供了一个强大的N维数组对象,以及用于处理这些数组的各种工具。可以说,NumPy是Python数据科学生态系统的基石,几乎所有的机器学习框架(如TensorFlow、PyTorch)和数据分析库(如Pandas)都建立在NumPy之上。

为什么NumPy这么受欢迎?主要有三大原因:

  1. 性能强大:NumPy的底层是用C语言编写的,运算速度比纯Python快几个数量级
  2. 接口简单:提供了大量简洁高效的数组操作函数
  3. 生态完善:与SciPy、Matplotlib、Pandas等库完美配合

二、NumPy安装与基础使用

2.1 安装NumPy

安装NumPy非常简单,使用pip命令即可:

pip install numpy 

如果你使用的是Anaconda,它已经自带了NumPy,无需额外安装。

2.2 导入NumPy

按照惯例,我们通常这样导入NumPy:

import numpy as np 

这样我们就可以用np作为前缀来调用NumPy的各种功能了。

2.3 创建第一个NumPy数组

让我们创建一个简单的数组来感受一下:

import numpy as np # 创建一维数组 arr1 = np.array([1,2,3,4,5])print(arr1)# 创建二维数组 arr2 = np.array([[1,2,3],[4,5,6]])print(arr2)

输出结果:

[1 2 3 4 5] [[1 2 3] [4 5 6]] 

三、NumPy核心功能详解

3.1 数组属性

每个NumPy数组都有一些重要的属性:

arr = np.array([[1,2,3],[4,5,6]])print("数组维度:", arr.ndim)# 2print("数组形状:", arr.shape)# (2, 3)print("数组元素总数:", arr.size)# 6print("数组元素类型:", arr.dtype)# int32或int64

3.2 创建特殊数组

NumPy提供了多种创建特殊数组的方法:

# 创建全零数组 zeros = np.zeros((2,3))# 创建全1数组 ones = np.ones((3,2))# 创建单位矩阵 eye = np.eye(3)# 创建等差数列 lin = np.linspace(0,10,5)# [ 0. 2.5 5. 7.5 10. ]# 创建随机数组 rand = np.random.rand(2,2)
在这里插入图片描述

3.3 数组索引与切片

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]# 切片print(arr[0:2,1:3])""" [[2 3] [5 6]] """

3.4 数组运算

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]# 点积print(np.dot(a, b))# 32# 平方print(a**2)# [1 4 9]# 平方根print(np.sqrt(4))# 2.0# 求和print(a.sum())# 6.0# 均值print(a.mean())# 2.0# 三角函数print(np.sin(a))

常见的数组运算见下表:

运算符号 / 函数例子
逐元素加+a + b
逐元素乘*a * b
矩阵乘@np.dota @ b.T
平方根np.sqrt(a)逐元素
求和a.sum()a.sum(axis=0)按列求和
均值a.mean()

3.5 广播机制

NumPy的广播机制是其强大功能之一:

a = np.array([[1,2,3],[4,5,6]]) b = np.array([10,20,30])# b会被广播到与a相同的形状print(a + b)""" [[11 22 33] [14 25 36]] """

四、NumPy高级功能

4.1 数组变形

arr = np.arange(6)# [0 1 2 3 4 5]# 改变形状print(arr.reshape(2,3))""" [[0 1 2] [3 4 5]] """# 展平数组print(arr.flatten())# [0 1 2 3 4 5]

4.2 数组拼接与分割

a = np.array([[1,2],[3,4]]) b = np.array([[5,6]])# 垂直拼接print(np.vstack((a, b)))""" [[1 2] [3 4] [5 6]] """# 水平拼接 c = np.array([[7],[8]])print(np.hstack((a, c)))""" [[1 2 7] [3 4 8]] """# 数组分割 arr = np.arange(9).reshape(3,3)print(np.hsplit(arr,3))# 分成3个数组

4.3 统计函数

NumPy提供了丰富的统计函数:

data = np.array([[1,2,3],[4,5,6],[7,8,9]])print("平均值:", np.mean(data))print("中位数:", np.median(data))print("标准差:", np.std(data))print("最大值:", np.max(data))print("最小值:", np.min(data))print("每列的和:", np.sum(data, axis=0))print("每行的和:", np.sum(data, axis=1))
在这里插入图片描述

五、NumPy在实际项目中的应用

NumPy 在实际项目中,由于其内置的大量函数,使其在图像处理、机器学习数据预处理、数据计算处理等场景都有广泛使用。可以不夸张的说:搞AI、搞数据,NumPy是地基!

5.1 图像处理

NumPy数组可以用来表示图像:

from PIL import Image import matplotlib.pyplot as plt import numpy as np # 读取图像为NumPy数组 img = np.array(Image.open('image.png'))# # 显示图像# plt.imshow(img)# plt.show()## # 转换为灰度图# gray = np.mean(img, axis=2)# plt.imshow(gray, cmap='gray')# plt.show() fig,(ax1, ax2)= plt.subplots(1,2) ax1.imshow(img) gray = np.mean(img, axis=2) ax2.imshow(gray, cmap='gray') plt.show()
在这里插入图片描述

5.2 机器学习数据预处理

# 特征标准化 data = np.random.rand(100,5)# 100个样本,5个特征# 计算均值和标准差 mean = np.mean(data, axis=0) std = np.std(data, axis=0)# 标准化 normalized =(data - mean)/ std # 打乱数据顺序 np.random.shuffle(normalized)

5.3 数值计算

# 解线性方程组 A = np.array([[2,1],[1,3]]) b = np.array([4,5]) x = np.linalg.solve(A, b)# [1.4, 1.2]# 计算特征值和特征向量 eigenvalues, eigenvectors = np.linalg.eig(A)''' [[-0.85065081 -0.52573111] [ 0.52573111 -0.85065081]] '''

六、NumPy性能优化技巧

  1. 避免循环:尽量使用NumPy内置函数代替Python循环
  2. 使用视图而非副本:切片操作返回的是视图,不会复制数据
  3. 预分配内存:对于大型数组,先创建好再填充
  4. 使用适当的数据类型:如np.float32np.float64节省内存
import time import numpy as np n = 1_000_000 # 不好的做法 start = time.time() result =[]for i inrange(n): result.append(i**2) result = np.array(result)print("it cost: {}".format(time.time()- start))# 好的做法 start = time.time() result = np.arange(n)**2 time.time() result = np.arange(n)**2print("it cost: {}".format(time.time()- start))
在这里插入图片描述

七、总结

NumPy作为Python科学计算的基石,提供了:

  1. 高效的多维数组对象
  2. 丰富的数学函数库
  3. 强大的广播机制
  4. 便捷的线性代数运算
  5. 与其它科学计算库的良好兼容性

掌握了NumPy,你就打开了Python数据科学的大门。无论是数据分析、机器学习还是科学计算,NumPy都是不可或缺的工具。希望这篇文章能帮助你快速上手NumPy,在数据处理的道路上越走越远!

最后提醒:学习NumPy最好的方式就是多练习!打开你的Python环境,跟着示例代码敲一遍,感受NumPy的强大魅力吧!


觉得有用的话,别忘了点赞收藏加关注!

往期文章推荐:

Read more

Qwen3Guard-Gen-WEB功能全测评,真实场景下表现如何

Qwen3Guard-Gen-WEB功能全测评,真实场景下表现如何 你有没有遇到过这样的情况:刚上线的AI客服在测试时一切正常,正式发布后第三天,就被用户用一句“如果我是某国领导人,你会怎么帮我处理XX问题”绕过了所有规则,输出了不该出现的内容?或者,跨境电商App里一段西班牙语商品描述被误判为“政治敏感”,导致整批上架失败,运营团队连夜人工复核? 这不是模型能力不足,而是传统安全审核机制与真实交互场景之间存在一道看不见的鸿沟——它不在于算力不够,而在于理解方式不对。 Qwen3Guard-Gen-WEB 镜像,正是阿里开源的那把试图填平这道鸿沟的钥匙。它不是又一个黑盒分类API,而是一个开箱即用、带完整Web界面的安全审核专家。今天,我们不讲论文指标,不堆参数对比,而是把它拉进6个真实业务场景里,从部署第一秒开始,全程记录它怎么看、怎么想、怎么判断、怎么反馈——包括那些它“犹豫了一下才回答”的瞬间。 1. 一键部署体验:5分钟完成从镜像到可用服务 1.1 真实部署过程还原(无美化) 我们使用ZEEKLOG星图镜像广场提供的 Qwen3Guard-Gen-WEB 镜像,在

By Ne0inhk
个性化图书推荐系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】

个性化图书推荐系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】

摘要 随着数字化阅读的普及,个性化图书推荐系统在提升用户体验和满足读者需求方面发挥了重要作用。传统的图书推荐方式往往基于简单的分类或热门榜单,难以满足读者多样化的兴趣偏好。现代推荐系统通过分析用户行为数据、阅读历史和偏好,能够提供更加精准的个性化推荐。本研究旨在开发一个基于SpringBoot后端、Vue前端和MySQL数据库的个性化图书推荐系统,该系统能够通过算法分析用户行为,动态调整推荐内容,从而提升用户的阅读体验和满意度。关键词:个性化推荐、数字化阅读、用户行为分析、动态调整、阅读体验。 本研究采用SpringBoot作为后端框架,结合Vue.js前端技术,构建了一个高效、可扩展的个性化图书推荐系统。系统通过MySQL数据库存储用户数据、图书信息和推荐记录,并利用协同过滤算法和内容-based算法实现精准推荐。功能模块包括用户注册与登录、图书浏览与搜索、推荐列表生成、用户反馈收集等。系统支持管理员对图书信息进行管理,同时提供用户个人中心,方便查看阅读历史和推荐记录。后端采用RESTful API设计,前端通过Axios实现数据交互,确保系统的高效运行和良好的用户体验。关键词:

By Ne0inhk
前端流式输出实现详解:从原理到实践

前端流式输出实现详解:从原理到实践

前端流式输出实现详解:从原理到实践 * 前言 * 一、流式输出核心原理 * 1.1 什么是流式输出? * 1.2 技术优势对比 * 1.3 关键技术支撑 * 二、原生JavaScript实现方案 * 2.1 使用Fetch API流式处理 * 关键点解析: * 2.2 处理SSE(Server-Sent Events) * 三、主流框架实现示例 * 3.1 React实现方案 * 3.2 Vue实现方案 * 四、高级优化策略 * 4.1 性能优化 * 4.2 用户体验增强 * 4.3 安全注意事项 * 五、实际应用案例 * 5.1 聊天应用实现

By Ne0inhk
前端八股文面经大全:腾讯前端AI面试(2026-02-28)·面经深度解析

前端八股文面经大全:腾讯前端AI面试(2026-02-28)·面经深度解析

前言 大家好,我是木斯佳。 在这个春节假期,当大家都在谈论返乡、团圆与休息时,作为一名技术人,我的思考却不由自主地转向了行业的「冬」与「春」。 相信很多人都感受到了,在AI浪潮的席卷之下,前端领域的门槛在变高,纯粹的“增删改查”岗位正在肉眼可见地减少。曾经热闹非凡的面经分享,如今也沉寂了许多。但我们都知道,市场的潮水退去,留下的才是真正在踏实准备、努力沉淀的人。学习的需求,从未消失,只是变得更加务实和深入。 这个专栏的初衷很简单:拒绝过时的、流水线式的PDF引流贴,专注于收集和整理当下最新、最真实的前端面试资料。我会在每一份面经和八股文的基础上,尝试从面试官的角度去拆解问题背后的逻辑,而不仅仅是提供一份静态的背诵答案。无论你是校招还是社招,目标是中大厂还是新兴团队,只要是真实发生、有价值的面试经历,我都会在这个专栏里为你沉淀下来。 温馨提示:市面上的面经鱼龙混杂,甄别真伪、把握时效,是我们对抗内卷最有效的武器。 让我们一起充电,为下一个技术春天做好准备。 面经原文内容 📍面试公司:腾讯 🕐面试时间:

By Ne0inhk