从零入门 NumPy:数据科学计算的 “瑞士军刀“

在数据科学与计算的世界里,有一个工具如同瑞士军刀般强大且不可或缺 —— 它就是 NumPy。如果你还在为 Python 列表的运算效率发愁,如果你想轻松处理矩阵和数组操作,那么这篇文章将带你解锁 NumPy 的核心技能,让你的数据处理效率飙升!

一,为什么 NumPy 是数据科学的必备工具?

想象一下,当你需要对一个包含百万级元素的列表进行数学运算时,用 Python 原生列表需要写嵌套循环,不仅代码冗长,运行速度还慢得让人崩溃。而 NumPy 的出现彻底解决了这个问题:

向量化运算:直接对数组和矩阵操作,告别繁琐的循环语句

丰富的数学函数:内置数百个数学函数,覆盖从基础运算到高级统计的所有需求

高效的内存管理:存储同类型数据,内存占用远低于 Python 列表

生态系统核心:Pandas、Matplotlib、Scikit-learn 等主流数据科学库都基于 NumPy 构建

用一个简单的比喻:如果 Python 列表是普通计算器,那 NumPy 就是一台超级计算机。

二,核心概念:Ndarray 数组对象

Ndarray(N-dimensional array)是 NumPy 的灵魂,它是一个同类型数据的多维集合,以 0 为起始下标。与 Python 列表最大的区别在于:

所有元素必须是同一数据类型

支持多维索引和切片

可以直接进行数学运算

数组的维度(axis)

理解维度是掌握 NumPy 的关键:

axis=0:第一个维度(对于二维数组就是行)

axis=1:第二个维度(对于二维数组就是列)

axis=2:第三个维度(三维数组的深度)

三,必会技能:创建 Ndarray 的 9 种方法

NumPy 提供了多种创建数组的函数,满足不同场景需求。这里精选最常用的 9 种方法:

1. array ():从列表创建数组

最基础的创建方式,能将 Python 列表或嵌套列表转换为 NumPy 数组:

2. zeros ():创建全 0 数组

快速创建指定形状的全 0 数组,常用于初始化:

3. ones ():创建全 1 数组

与 zeros () 类似,但创建全 1 数组:

4. full ():创建指定值的数组

想让数组元素都为某个特定值?用 full ():

5. eye ():创建单位矩阵

对角线为 1,其余为 0 的方阵,线性代数必备:

6. arange ():创建等差数列

类似 Python 的 range,但返回的是 NumPy 数组:

7. linspace ():创建等间隔数组

与 arange () 的区别是:linspace 指定元素数量而非步长:

8. random 系列:创建随机数组

随机数在数据分析中用途广泛,NumPy 提供了丰富的随机数组生成函数:

random.rand()函数:

random.random()函数:

random.randint()函数:

random.randn()函数:

random.normal()函数:

9. frombuffer ():从缓冲区创建

处理字节流数据时非常有用,能直接将字符串转换为数组:

四,数组属性:掌握数组的 "身份信息"

想要了解一个数组,就需要查看它的属性。NumPy 提供了丰富的属性描述数组特征:

ndim 维度数量(秩)

                                                     

shape 数组形状(n 行 m 列)

                                                   

size 元素总个数

dtype 元素数据类型                                                     

itemsize 每个元素的字节数 

五,切片与索引:数组元素的 "定位术"

获取数组中的元素是最常用的操作,NumPy 的切片和索引与 Python 列表类似,但支持多维操作:

切片操作


通过start:stop:step的形式获取子数组:

省略号用法

对于高维数组,可以用...省略中间维度:

六,实战练习:8个经典场景

光说不练假把式,通过以下练习巩固所学知识:

  1. 生成 3×3 的对角矩阵
  2. 创建长度为 10 的数组,值在 0~1 之间(不包含 0 和 1)
  3. 创建长度为 10 的全 0 数组,第 5 个值为 1
  4. 创建 30 到 50 之间,步长为 2 的数组
  5. 创建四边为 1,中间为 0 的 5×5 二维数组
  6. 创建一个2*3的二维数组。并分别输出它的维度、行数和列数、元素个数。
  7. 给定一个6*7*8的三维矩阵,求第100个元素的索引是什么?
  8. 如何交换二维数组中的两列?

七,总结:为什么 NumPy 值得你掌握?

在数据爆炸的时代,高效处理数据的能力变得越来越重要。NumPy 作为数据科学的基石,不仅能大幅提升你的代码效率,还能让你的编程思路从 "循环思维" 转变为 "向量思维"—— 这正是数据科学家的核心竞争力之一。

无论是机器学习中的矩阵运算,还是数据分析中的统计计算,NumPy 都是你不可或缺的工具。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值