巧用Python的NumPy库进行数值计算

liftword2个月前 (02-24)技术文章21

宝子们,今天咱来唠唠Python里超厉害的一个库——NumPy。在数据处理、科学计算的江湖里,它可是响当当的“大侠”!要是你玩Python还没和NumPy混熟,那可就像剑客少了把利剑,关键时刻总差那么点意思。

一、NumPy库简介

NumPy,全称 Numerical Python,是Python的基础科学计算库。它提供了高性能的多维数组对象(ndarray),啥概念呢?就好比给你个超给力的“数据收纳盒”,规整又高效。而且它自带一箩筐丰富的函数库,专门处理这些数组数据,从简单的数学运算到复杂的线性代数,统统不在话下。毫不夸张地说,它可是众多超火的数据科学、机器学习库的“地基”,像 Pandas、Scikit-learn 这些大佬,都得站在它的肩膀上搞事情。

二、NumPy数组的创建

从Python基本数据结构创建

咱日常用的 Python 列表、元组,想变身成 NumPy 数组,那是分分钟的事儿。只要用 np.array() 函数一招搞定。比如说,咱有个列表 [1, 2, 3, 4, 5],代码这么写:

import numpy as np
my_list = [1, 2, 3, 4, 5]
numpy_array = np.array(my_list)
print(numpy_array) 

运行一下,列表就华丽变身为整齐的 NumPy 数组啦,打印出来就是 [1 2 3 4 5],是不是超简单?

运用特定函数创建特定数组

要是咱想偷懒,直接生成一些特殊数组,NumPy 也给咱备着“捷径”。像 np.zeros() 能一键生成全零数组,假如咱要个 3 行 4 列的全零矩阵,代码:

zero_array = np.zeros((3, 4))
print(zero_array)

打印出来就是个规规矩矩的 3×4 全零矩阵。还有 np.ones() 搞全一数组,np.arange() 按指定范围创建等间隔数组,np.linspace() 按咱给定的样本数量生成等间隔数组,各有各的神通,就看咱啥需求啦。

三、NumPy数组的属性查看

维度、形状与元素个数查看

创建完数组,咱总得瞅瞅它长啥样吧。用 ndim 能查看数组维度,shape 查看各维度的尺度,size 瞅一眼元素个数。比如咱刚生成的那个 3×4 全零矩阵:

print(zero_array.ndim)  
print(zero_array.shape) 
print(zero_array.size)  

依次打印出 2(二维数组)、(3, 4)(3 行 4 列)、12(一共 12 个元素),瞬间对数组了如指掌。

元素类型及大小查看

再看看数组里元素是啥类型,占多大空间,dtype 查元素类型,itemsize 看每个元素大小。像:

print(zero_array.dtype)  
print(zero_array.itemsize) 

对于全零数组,元素是 float64 类型,每个元素占 8 个字节,是不是一清二楚啦?

四、NumPy数组的基本操作

数组的形状变换

有时候数组形状不合心意,没事,reshape() 函数来救场。咱有个一维数组想变成二维的,代码:

one_d_array = np.arange(12)
new_shape_array = one_d_array.reshape(3, 4)
print(new_shape_array)

原本 12 个元素的一维数组,就变成 3 行 4 列的二维数组啦。要是想拍扁成一维,flatten() 函数上场,多维数组立马变一维,超好用。还有 swapaxes() 函数,能像变魔术一样调换数组维度,数据处理的花样玩法它都懂。

数组的拼接与分割

数据整合、拆分少不了。np.concatenate() 沿指定轴连接数组,好比把积木按咱想要的方向拼起来。要是有俩数组 [1, 2, 3] 和 [4, 5, 6],想按行拼一起:

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
concat_array = np.concatenate((arr1, arr2))
print(concat_array) 

就得到 [1 2 3 4 5 6]。想分开?np.split() 沿指定轴分割数组,不管是平均分还是按咱指定位置分,都能妥妥搞定。

五、NumPy中的数学运算

基本算术运算

NumPy 搞数学运算,那叫一个丝滑。数组加法、减法、乘法、除法,直接上就行,不用咱傻乎乎地写循环遍历。像俩数组 [1, 2, 3] 和 [4, 5, 6] 相加:

arr_a = np.array([1, 2, 3])
arr_b = np.array([4, 5, 6])
sum_array = arr_a + arr_b
print(sum_array) 

直接得出 [5 7 9],一步到位,这效率,杠杠的。

通用函数运用

求平方根、指数值、绝对值这些操作,NumPy 有专门的通用函数。np.sqrt() 求平方根,给个数组 [4, 9, 16],代码:

sqrt_array = np.sqrt([4, 9, 16])
print(sqrt_array) 

立马算出 [2. 3. 4.]。np.exp() 求指数,np.abs() 取绝对值,这些函数能直接在数组上玩元素级操作,数学计算从此变得 so easy。

六、NumPy的统计分析函数

均值、最值与方差

想分析数组的统计特征,NumPy 给咱备齐工具。np.mean() 求均值,比如有个数组 [1, 2, 3, 4, 5]:

stats_array = np.array([1, 2, 3, 4, 5])
mean_value = np.mean(stats_array)
print(mean_value) 

算出均值 3。np.max() 找最大值,np.min() 挖最小值,np.var() 求方差,数据的脾气秉性,通过这些函数一测一个准。

中位数与百分位数

找中位数用 np.median(),像数组 [1, 3, 2, 4, 5]:

median_array = np.array([1, 3, 2, 4, 5])
median_value = np.median(median_array)
print(median_value) 

算出中位数 3。要是想知道数据在某个百分位的情况,np.percentile() 上场,不管是看成绩分布还是数据趋势,它都能给出关键指标。

七、NumPy的线性代数运算

矩阵乘法

线性代数里矩阵乘法家常便饭,NumPy 用 np.dot() 函数轻松拿捏。俩矩阵相乘,代码:

matrix_a = np.array([[1, 2], [3, 4]])
matrix_b = np.array([[5, 6], [7, 8]])
product_matrix = np.dot(matrix_a, matrix_b)
print(product_matrix) 

按规则算出乘积矩阵,这对处理图像、机器学习里的模型参数运算可太重要啦。

逆矩阵与行列式计算

求逆矩阵用 np.linalg.inv(),算行列式用 np.linalg.det()。给个简单矩阵,像:

square_matrix = np.array([[1, 2], [3, 4]])
inverse_matrix = np.linalg.inv(square_matrix)
determinant = np.linalg.det(square_matrix)
print(inverse_matrix)
print(determinant) 

瞬间算出逆矩阵和行列式的值,线性代数难题迎刃而解。

八、NumPy数组的索引与切片

一维数组的索引与切片

一维数组取元素,跟咱取列表元素类似,用索引定位单个元素,切片获取部分元素。比如数组 [1, 2, 3, 4, 5],取第三个元素:

one_dim = np.array([1, 2, 3, 4, 5])
print(one_dim[2]) 

得到 3。要是取中间三个元素,切片操作:

print(one_dim[1:4]) 

打印出 [2 3 4],简单又好用。

多维数组的索引与切片

多维数组索引、切片稍微复杂点,但也有套路。二维数组咱就用行列索引定位元素,像:

two_dim = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(two_dim[1, 2]) 

取出第二行第三列的元素 6。切片的话,按维度分别切就行,玩转多维数据,就靠它啦。

九、NumPy的随机数生成

做模拟、搞实验,随机数不能少。NumPy 里 np.random.rand() 生成均匀分布随机数,取值范围 0 到 1。要是生成 5 个:

rand_array = np.random.rand(5)
print(rand_array) 

得到 5 个随机小数。np.random.randn() 生成标准正态分布随机数,还有各种参数设定,能生成咱想要的各种分布随机数,为数据分析、算法测试提供无限可能。

宝子们,NumPy 的本事可远不止这些,今天只是浅尝辄止。赶紧动手试试,让你的 Python 数据处理技能原地起飞,以后不管是科研、工作还是玩数据,都能游刃有余!

怎么样,这波干货够硬吧,要是还有啥疑问,评论区留言,咱一起探讨!

相关文章

Python矩阵操作详解

Python 处理矩阵的方式有很多,其中最常用的库是 NumPy,它提供了高效的矩阵运算和操作能力。此外,pandas、SciPy 和 TensorFlow 等库也支持矩阵运算。下面介绍一下矩阵操作的...

仅用 10 行 Python 代码,搞定 10 种数学运算!

【CSDN 编者按】在如今这个 AI 飞速发展的时代,Python 以其简洁、易读的语法和强大的表现力,深受程序员和科学家的喜爱。本文将展示在仅仅 10 行代码内,Python 如何实现复杂的数学运算...

如何在 Python 中制作矩阵:详细指南

什么是矩阵?在深入研究之前,让我们了解一下矩阵是什么:它是一个按行和列排列的数字的矩形数组。在 Python 中,我们通常使用嵌套列表来表示矩阵,其中每个内部列表代表一行。使用列表创建基本矩阵让我们从...

学习Numpy,看这篇文章就够啦

导读:在数据分析当中,Python用到最多的第三方库就是Numpy。本文内容是「大数据DT」内容合伙人王皓阅读学习《Python 3智能数据分析快速入门》过后的思考和补充,结合这本书一起学习,效果更佳...

Python Numpy和矩阵的相关面试问题

通常,数据科学家被要求在Python中执行简单的矩阵运算,这应该很简单,但许多人会偏离正轨。本文将介绍面试中经常出现的4个Numpy/matrix问题,并用Python编写代码。问题1:给定4x4 N...

《Python机器学习实践》课程学习方法指引

不久前发布的DeepSeek-R1,将AI推到人类科技新高度!AI正成为最炙手可热的话题。对标同学们自己,无论是想进入数据科学领域,还是希望提升自己在职场上的竞争力,《Python机器学习实践》这门课...