P叔带你详解Python模块NumPy

Python Numpy模块 NumPyPython中一个用于科学计算的开源模块,提供了多维数组对象和一系列用于处理数组的函数库。它可以让用户更加方便地进行数据处理、数值分析和科学计算等任务。NumPy中的数组实现了向量化操作,可以使用广播等方式进行高效的数值计算。另外,NumPy还提供了线性代数、傅里叶变换、随机数生成等多种功能。使用NumPy之前,请确保已经安装了NumPy模块。安装方法:pip install numpy 阅读详情

1. 为什么要学习NumPy?

NumPy[1](Numerical Python)是一个用于处理数组的Python库,学习机器学习的过程中先学会使用NumPy是非常重要的,为什么要学习NumPy呢?原因如下:

  1. 1. 数组操作和运算:NumPy提供了高效的数组操作和数学运算功能,这对于处理和转换数据是至关重要的。在机器学习中,你经常需要对数据进行处理、转换和重塑,使用NumPy可以方便地进行这些操作。

  2. 2. 高性能计算:NumPy是基于C语言实现的,它的计算效率非常高。在机器学习中,处理大规模的数据和进行复杂的数学计算是很常见的。NumPy提供了高性能的数组操作和数学运算,能够有效地处理这些任务。

  3. 3. 数据表示和处理:在机器学习中,数据通常以多维数组的形式表示。NumPy提供了灵活和高效的多维数组操作,使你能够方便地表示和处理各种类型的数据,包括图像、文本等。

  4. 4. 库的依赖性:许多常用的机器学习库和框架,如Scikit-learn、TensorFlow和PyTorch,都依赖于NumPy。学会使用NumPy可以帮助你更好地理解和使用这些库和框架,以便更好地进行机器学习任务。

综上所述,学习机器学习之前先学会使用NumPy是为了更好地处理和处理数据、进行高性能计算,并为后续学习和使用其他机器学习库打下坚实的基础。

2.安装使用NumPy

首先,我们需要确保已经安装了NumPy库。可以通过在终端或命令提示符中运行以下命令来安装NumPy:

pip install numpy

安装完成后,我们就可以开始使用NumPy。

#导入NumPy库  
import numpy as np

3.NumPy创建数组

NumPy最强大的功能之一是创建多维数组。我们可以使用NumPy的array()函数来创建数组。

例如,我们可以创建一个一维数组:

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

输出:

[1 2 3 4 5]

我们也可以创建一个二维数组:

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

输出:

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

3.1 数组属性

NumPy数组有许多重要的属性,可以帮助我们了解数组的特征。

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

输出:

数组形状: (5,)  
数组维度: 1  
数组元素总数: 5  
数组数据类型: int32

3.2 数组操作

NumPy提供了许多数组操作的功能,例如数组索引、切片和形状变换等。

arr = np.array([1, 2, 3, 4, 5])  
print("第一个元素:", arr[0])  
print("前两个元素:", arr[:2])  
print("倒数三个元素:", arr[-3:])

输出:

第一个元素: 1  
前两个元素: [1 2]  
倒数三个元素: [3 4 5]

3.3 数组运算

NumPy支持对数组进行基本的数学运算,例如加法、减法、乘法和除法。

arr1 = np.array([1, 2, 3])  
arr2 = np.array([4, 5, 6])  
  
print("加法:", arr1 + arr2)  
print("减法:", arr1 - arr2)  
print("乘法:", arr1 * arr2)  
print("除法:", arr1 / arr2)

输出:

加法: [5 7 9]  
减法: [-3 -3 -3]  
乘法: [ 4 10 18]  
除法: [0.25 0.4  0.5 ]

3.4 常用函数

NumPy还提供了许多常用的函数,例如求和、平均值、最大值和最小值。

arr = np.array([1, 2, 3, 4, 5])  
  
print("求和:", np.sum(arr))  
print("平均值:", np.mean(arr))  
print("最大值:", np.max(arr))  
print("最小值:", np.min(arr))

输出为:

求和: 15  
平均值: 3.0  
最大值: 5  
最小值: 1

4. NumPy高级用法

4.1 广播(Broadcasting)

NumPy数组广播是一种自动执行元素级操作的机制。它可以使具有不同形状的数组在算术运算中表现得像具有相同形状的数组一样。这种机制大大简化了对不同形状数组之间的操作。

下面是一个示例代码,演示了如何使用广播来执行数组的加法运算:

import numpy as np  
  
arr1 = np.array([[1, 2, 3],  
                 [4, 5, 6]])  
  
arr2 = np.array([10, 20, 30])  
  
result = arr1 + arr2  
  
print(result)

在上面的代码中,arr1 是一个形状为 (2, 3) 的二维数组,arr2 是一个形状为 (3,) 的一维数组。根据广播规则,arr2 实际上被扩展为了形状为 (2, 3) 的二维数组,其中每一行都是 arr2。然后,数组 arr1 和扩展后的 arr2 进行元素级加法运算,得到了最终的结果。

输出结果为:

[[11 22 33]  
 [14 25 36]]

通过广播机制,我们可以直接对不同大小的数组执行加法操作,而不需要手动进行数组形状的调整。这样可以大大简化代码,并提高效率。同时,广播机制也可以应用于其他的 NumPy 函数和运算中。

4.2 高级索引

NumPy提供了多种高级索引技巧,用于访问数组的特定位置。以下是三种常用的高级索引方法:

  1. 1. 整数数组索引:使用一个整数数组作为索引,可以选择数组中的特定元素。
import numpy as np  
  
a = np.array([1, 2, 3, 4, 5])  
  
# 使用整数数组索引获取指定位置的元素  
indices = np.array([1, 3])  
  
result = a[indices]  
  
print(result)

输出:

[2, 4]
  1. 1. 布尔数组索引:使用一个布尔数组作为索引,可以根据布尔数组的元素值来选择数组中的元素。
import numpy as np  
  
a = np.array([1, 2, 3, 4, 5])  
  
# 使用布尔数组索引选择大于3的元素  
mask = a > 3  
  
result = a[mask]  
  
print(result)

输出:

[4, 5]

还可以按布尔数组进行匹配

arr = np.array([1, 2, 3, 4, 5])  
mask = np.array([True, False, True, False, True])  # 选择为True的元素  
print(arr[mask])  # 输出 [1 3 5]
  1. 1. 花式索引(Fancy indexing):使用整数数组或整数列表作为索引,可以根据指定的索引位置选择数组中的元素。
import numpy as np  
  
a = np.array([1, 2, 3, 4, 5])  
  
# 使用花式索引获取指定位置的元素  
indices = np.array([0, 2, 4])  
  
result = a[indices]  
  
print(result)

输出:

array([1, 3, 5])

多维数组的操作与此类似,如果有时间,不妨在上述例子上动手试一下,记住,如果使用负整数,索引会从末尾倒着开始哦。

4.3 数组操作

NumPy提供了一些方便的函数来操作数组,包括连接数组、分割数组、改变数组形状和交换数组维度等。

  1. 1. 连接数组:使用np.concatenate()函数沿指定轴连接数组
import numpy as np  
  
a = np.array([[1, 2],  
              [3, 4]])  
  
b = np.array([[5, 6],  
              [7, 8]])  
  
# 沿行方向连接数组  
result = np.concatenate((a, b), axis=0)  
  
print(result)

输出:

[[1, 2]  
 [3, 4]  
 [5, 6]  
 [7, 8]]
  1. 1. 分割数组:使用np.split()函数将数组分割为多个子数组
import numpy as np  
  
a = np.array([1, 2, 3, 4, 5])  
  
# 将数组分割为3个子数组  
result = np.array_split(a, 3)  
  
print(result)

输出:

[array([1, 2]), array([3, 4]), array([5])]

np.array_split()是 NumPy 中用于将数组拆分成多个子数组的函数。它接受三个参数:数组、拆分的位置或拆分的索引、拆分的轴。当我们拆分多维数组时,又会发生什么呢?

import numpy as np  
  
# 创建一个数组  
arr = np.arange(1, 13).reshape(3, 4)  
print("原始数组:")  
print(arr)  
  
# 对数组进行拆分  
sub_arrays = np.array_split(arr, 2, axis=1)  
print("\n拆分后的子数组:")  
for sub_arr in sub_arrays:  
    print(sub_arr)

运行这段代码,输出将是:

原始数组:  
[[ 1  2  3  4]  
 [ 5  6  7  8]  
 [ 9 10 11 12]]  
  
拆分后的子数组:  
[[ 1  2]  
 [ 5  6]  
 [ 9 10]]  
[[ 3  4]  
 [ 7  8]  
 [11 12]]

wahoo,很明显,拆分根据axis参数,只获取二维原始数组(2-D)中的前2列,即在原始二维数组arr的每个元素下标为axis=1的位置停止了。

在这个示例中,我们创建了一个 3 行 4 列的数组 arr,然后使用 np.array_split(arr, 2, axis=1) 将数组拆分成两个子数组。拆分的结果是一个包含两个数组的列表 sub_arrays,要注意的是,拆分的轴参数axis是可选的。如果没有提供轴参数,np.array_split() 默认在 0 轴(行)上进行拆分。

  1. 1. 改变数组形状:使用np.reshape()函数改变数组的形状
import numpy as np  
  
a = np.array([[1, 2, 3],  
              [4, 5, 6]])  
  
# 将数组转换为2x3的形状  
result = np.reshape(a, (2, 3))  
  
print(result)

输出:

[[1, 2, 3]  
 [4, 5, 6]]
  1. 1. 交换数组维度:使用np.transpose()函数交换数组的维度
import numpy as np  
  
a = np.array([[1, 2, 3],  
              [4, 5, 6]])  
  
# 交换数组的维度  
result = np.transpose(a)  
  
print(result)

输出:

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

4.4 ufunc函数

ufunc(universal functions)是一种可以对数组进行元素级运算的函数。NumPy提供了许多ufunc函数,如np.add()np.subtract()np.multiply()np.divide()等。以下是一个简单的示例:

import numpy as np  
  
a = np.array([1, 2, 3])  
b = np.array([4, 5, 6])  
  
# 对数组进行元素级加法运算  
result = np.add(a, b)  
  
print(result)

输出:

[5, 7, 9]

4.5 矩阵运算

NumPy支持矩阵运算,可以使用np.dot()函数计算两个数组的矩阵乘法。另外,np.linalg模块提供了一些常用的线性代数函数,如计算逆矩阵、解线性方程组、计算特征值和特征向量等。以下是一个简单的例子:

import numpy as np  
  
a = np.array([[1, 2],  
              [3, 4]])  
  
b = np.array([[5, 6],  
              [7, 8]])  
  
# 计算两个数组的矩阵乘法  
result = np.dot(a, b)  
  
print(result)

输出:

[[19, 22]  
 [43, 50]])

4.6 数组的高级排序

除了常规的排序方法外,NumPy还提供了一些高级的排序技巧。np.lexsort()函数可以根据键的组合对多个数组进行排序。np.argsort()函数返回数组排序后的索引,而不是排序后的实际值。以下是一个简单的示例:

import numpy as np  
  
a = np.array([3, 1, 2])  
b = np.array([5, 4, 6])  
  
# 根据a和b的值对数组进行排序  
indices = np.lexsort((b, a))  
  
sorted_array = a[indices]  
  
print(sorted_array)

输出:

[1, 2, 3]

np.lexsort 函数是 NumPy 中用于执行间接排序的函数。它将根据给定的键序列对数组进行排序,并返回排序后的索引。

具体来说,lexsort 函数使用键序列的最后一个键进行排序,然后使用倒数第二个键进行排序,以此类推,直到使用第一个键进行排序。这样,最终得到的索引序列将使数组按照键序列逐级排序。

让我们通过一个示例来演示 lexsort 函数的用法:

import numpy as np  
  
  
# 创建一个包含姓名的字符串数组,  
names = np.array(['Alice', 'Bob', 'Charlie', 'David'])  
  
# 创建一个二维数组,分别代表上述学生的语文、数学、英语成绩  
scores = np.array([[70, 85, 90],  
                   [60, 75, 80],  
                   [80, 90, 85],  
                   [75, 80, 70]])  
  
# 使用 lexsort 对数组进行排序、按  
sorted_indices = np.lexsort((scores[:, 1], scores[:, 2], scores[:, 0]))  
  
# 根据排序后的索引序列获取排序后的数组和姓名  
sorted_scores = scores[sorted_indices]  
sorted_names = names[sorted_indices]  
  
print("Sorted Scores:")  
print(sorted_scores)  
print("\nSorted Names:")  
print(sorted_names)  

输出结果为:

Sorted Scores:  
[[60 75 80]  
 [70 85 90]  
 [75 80 70]  
 [80 90 85]]  
  
Sorted Names:  
['Bob' 'Alice' 'David' 'Charlie']

在上面的示例中,我们使用 lexsort 函数根据每个学生的成绩(先按照数学成绩排序,然后按照英语成绩排序,最后按照语文成绩排序)对学生的记录进行排序。最后,我们根据排序后的索引序列获取了排序后的数组和姓名。

5. 总结

NumPy是Python科学计算的核心库之一,广泛用于数据处理、统计分析和数值计算。

NumPy的高级用法能够提高代码的灵活性和效率,让我们更方便地处理不同形状的数组、获取特定位置的元素,并对数组进行各种操作。通过学习以上几个高级用法,我们可以更好地利用NumPy进行科学计算和数据处理。希望本教程对您有所帮助,更多高级用法请参考NumPy官方文档[3]。

引用链接

[1] NumPy: https://numpy.org/
[2] Python基础教程:Turtle绘制图形: http://www.poycode.cn/coding/python/python-basic-tutorial-15/
[3] NumPy官方文档: https://numpy.org/doc/stable/

推荐一本我正在看的书,纳瓦尔宝典,财富与幸福指南。值得看看,缓解焦虑。

---------------------------END---------------------------

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

👉CSDN大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保img

img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img
三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述
Python解矩阵方程——Numpy模块 Python解矩阵方程,可以用两个模块——Numpy和Sympy 矩阵方程:Ax=b A为系数矩阵,b为解集矩阵 令B为A的增广矩阵 1、Ax=b无解的充要条件:r(A)+1=r(B) 2、Ax=b唯一解的充要条件:r(A)=r(B)=n 3、Ax=b无穷多解的充要条件:r(A)=r(B)<n 1、Numpy 这里要用到numpy.linalg模块 import numpy as np # numpy.linalg模块包含线性代数的函数。使用这个模块,可以计算逆矩阵、求特征值、解线性方程组以及求解行列式等 阅读详情

相关推荐

Python-Numpy详解

一、初识Numpy NumPy是一个Python包,它是一个由多维数组对象和用于处理数组的例程集合组成的库。 通过Numpy,可以进行如下操作: 数组的算数和逻辑运算。 傅立叶变换和用于图形操作的例程。 与线性代数有关的操作,NumPy 拥有线性代数和随机数生成的内置函数。 现在一般通过Numpy、Scipy(Scientific Python)和Matplotlib(绘图库)结合来替代...

Apple_hzc的博客 2万+

Numpy数据处理详解Python机器学习和数据科学中的高性能计算方.pptx

Numpy数据处理详解Python机器学习和数据科学中的高性能计算方.pptx

python常用模块numpy解析(详解

numpy模块使用详解 以下命令都是在浏览器中输入。 cmd命令窗口输入:jupyter notebook 后打开浏览器输入网址http://localhost:8888/ 一、导入模块 import numpy as np 查看numpy版本 np.__version__ 二、创建数组(ndarray) 1. 使用np.array() 参数为列表: 如[1, 4, ............

LDC,公众号【轻松学编程】 6271

史上最全详解NumPy库,小白也能看懂的python入门!

NumPy,全称Numerical Python,是一个开源的Python库,它为Python提供了强大的多维数组对象和用于处理这些数组的函数。NumPy的核心是ndarray,它是一个高效的多维数组容器,用于存储和处理大规模的数据。NumPy还提供了许多数学函数,用于数组之间的操作,以及用于线性代数、傅立叶变换和随机数生成等功能。NumPyPython编程中的一个强大工具,它为处理大规模数据、科学计算和数学建模提供了便捷和高效的方法。

weixin_68789096的博客 1万+

数据分析之Numpy模块详解

文章目录1. Numpy数组和Python列表性能对比 1. Numpy数组和Python列表性能对比

自成背后的博客 1万+

TutorialsPoint NumPy 教程

来源:NumPy Tutorial - TutorialsPoint 译者:飞龙 协议:CC BY-NC-SA 4.0 NumPy - 简介NumPy 是一个 Python 包。 它代表 “Numeric Python”。 它是一个由多维数组对象和用于处理数组的例程集合组成的库。Numeric,即 NumPy 的前身,是由 Jim Hugunin 开发的。 也开发了另一个包 Nu

龙哥盟 4万+

P详解Python模块NumPy_numpy模块 python

NumPy的高级用法能够提高代码的灵活性和效率,让我们更方便地处理不同形状的数组、获取特定位置的元素,并对数组进行各种操作。通过广播机制,我们可以直接对不同大小的数组执行加法操作,而不需要手动进行数组形状的调整。当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保。

2401_87361745的博客 1011

P详解Python模块NumPy_numpy模块 python(1)

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。wahoo,很明显,拆分根据axis参数,只获取二维原始数组(2-D)中的前2列,即在原始二维数组arr的每个元素下标为axis=1的位置停止了。

m0_61042126的博客 463

2024年最新P详解Python模块NumPy_numpy模块 python(1),2024年最新字节跳动开发面试流程

🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化学习资料的朋友,可以戳这里获取。

2401_84140485的博客 667

2024年Python最新P详解Python模块NumPy_numpy模块 python(2),小米面试完多久谈薪资

Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

m0_60666841的博客 271

python如何安装numpy模块

python安装numpy模块python numpy安装思路第一次安装时的思路第一次安装时遇到的坑第二次安装的思路(快速安装避免踩坑) python numpy安装思路 在python3.X版本都自有pip,什么是pip? pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能 ——引用自菜鸟教程 如何判断自己的python是否安装有pip? 可以在cmd上通过以下代码进行判断 pip --version 我的python没有pip是怎么回事? 版本问题,

海风依旧 13万+

Python使用pip安装Numpy模块

环境 python版本:python-3.9.1 操作系统:Windows10 想要安装的模块numpy 前提 使用pip安装模块,需要保证pip为最新版本。如果使用pip时出现问题提示: You should consider upgrading via the 'python -m pip install --upgrade pip' command. 则可以进行pip更新,在cmd下输入: python -m pip install --upgrade pip 更新...

pad45723的博客 13万+

python中的numpy模块

目录 NumPy 教程 学习本教程前你需要了解 NumPy 应用 相关链接 NumPy 安装 1、使用已有的发行版本 2、使用 pip 安装 Linux 下安装 安装验证 NumPy Ndarray 对象 NumPy 数据类型 数据类型对象 (dtype) NumPy 数组属性 ndarray.ndim ndarray.shape ndarray.itemsize ...

weixin_36670529的博客 4995

P你学Python-1

在编程中,测试是一项重要的工作,可以帮助我们验证代码的正确性和稳定性。在Python编程环境中,测试Python环境的正确性同样非常重要。通过检查Python版本、运行简单的Python程序、安装并运行Python库、运行单元测试以及验证Python库的功能,可以确保Python环境正常工作,从而提高编程的效率和代码的质量。希望本篇文章对于介绍如何测试Python环境有所帮助。—END—一、Python所有方向的学习路线。

2401_86963778的博客 752

Python NumPy详解

大家好,在当今数据驱动的世界中,处理大规模数据、进行复杂数值计算是科学研究、工程设计以及数据分析的关键任务之一。在Python生态系统中,NumPy(Numerical Python)库是一款备受推崇的工具,它为我们提供了高效的数组操作、数学函数以及线性代数运算等功能,成为了科学计算和数据处理的利器。

若不知道要驶向哪个码头,那么任何风都不会是顺风。 6974

python安装numpy-Python使用pip安装Numpy模块

安装Numpy模块一般有两种安装方法:一:下载模块对应的.exe文件,直接双击运行安装二:下载模块对应的.whl文件,使用pip安装对于exe文件的安装比较简单,都是双击运行,这里就不说了。这里着重讲下pip安装模块的方法:我的python版本是3.6,如图:下载的对应Numpy版本是下载时需将Numpy下载到Python的安装目录下scripts目录下2.在cmd中执行以下的命令:python ...

weixin_37988176的博客 4045
上一篇: P叔带你学装饰器
下一篇: Python爬虫| 爬虫框架Scrapy的构架、工作原理及工作流程是怎样的?
Python_P叔
博客等级 码龄3年 5358粉丝 827原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值