iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python的numpy模块使用实例分析
  • 347
分享到

python的numpy模块使用实例分析

2023-06-30 15:06:36 347人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

今天小编给大家分享一下python的numpy模块使用实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Numpy是Nu

今天小编给大家分享一下python的numpy模块使用实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

    Numpy是Numerical Python extensions的缩写,字面意思是Python数值计算扩展。Numpy是python中众多机器学习库的依赖,这些库通过Numpy实现基本的矩阵计算。

    Numpy支持高阶、大量计算的矩阵、向量计算,与此同时还提供了较为丰富的函数。此外,Numpy基于更加现代化的编程语言--python,python凭借着开源、免费、灵活性、简单易学、工程特性好等特点风靡技术圈,已经成为机器学习数据分析等领域的主流编程语言。

    一、array类型

    numpy的array类型是该库的一个基本数据类型,这个数据类型从字面上看是数组的意思,也就意味着它最关键的属性是元素与维度,我们可以用这个数据类型来实现多维数组。

    因此,通过这个数据类型,我们可以使用一维数组来表示向量,二维数组表示矩阵,并以此类推以用来表示更高维度的张量。

    1.1array类型的基本使用

    import numpy as np# 通过np.array()方法创建一个名为array的array类型,参数是一个listarray = np.array([1, 2, 3, 4])print(array)# 结果为:[1 2 3 4]# 获取array中元素的最大值print(array.max())# 结果为:4# 获取array中元素的最小值print(array.min())# 结果为:1# 获取array中元素的平均值print(array.mean())# 结果为:2.5# 直接将array乘以2,python将每个元素都乘以2print(array*2)# 结果为:[2 4 6 8]print(array+1)# 结果为:[2 3 4 5]print(array/2)# 结果为:[0.5 1.  1.5 2. ]# 将每一个元素都除以2,得到浮点数表示的结果print(array % 2)# 结果为:[1 0 1 0]array_1 = np.array([1, 0, 2, 0])# 获取该组数据中元素值最大的那个数据的首个索引,下标从0开始print(array_1.argmax())# 结果为:2

    通过上面的代码,我们可以了解到Numpy中array类型的基本使用方法。

    我们可以看到,array其实是一个类,通过传入一个list参数来实例化为一个对象,从而实现了对数据的封装。

    1.2对更高维度数据的处理

    import numpy as np# 创建一个二维数组,用以表示一个3行2列的矩阵array = np.array([[1, 2], [3, 4], [5, 6]])print(array)# 查看数据的维度属性,下面输出结果(3,2)表示3行2列print(array.shape)# 结果为:(3, 2)# 查看元素个数print(array.size)# 结果为:6# 查看元素最大值的索引print(array.argmax())# 结果为:5# 将shape为(3,2)的array转换为一行表示print(array.flatten())# 结果为:[1 2 3 4 5 6]# 我们可以看到,flatten()方法是将多维数据“压平”为一维数组的过程#将array数据从shape为(3,2)的形式转为(2,3)的形式print(array.reshape(2, 3))'''结果为:[[1 2 3] [4 5 6]]'''#将array数据从shape为(3,2)的形式转为(1,6)的形式print(array.reshape(1, 6))# 结果为:[[1 2 3 4 5 6]]

    高级一点的就是flatten()和reshape()函数了,需要注意下reshape()返回的结果是array类型

    1.3Numpy创建特殊类型的array类型

    1.3.1生成全为0或全为1的array
    import numpy as np# 生成所有元素为array_zeros = np.zeros((2, 3, 3))print(array_zeros)'''结果为:[[[0. 0. 0.]  [0. 0. 0.]  [0. 0. 0.]] [[0. 0. 0.]  [0. 0. 0.]  [0. 0. 0.]]]'''array_ones = np.ones((2, 3, 3))print(array_ones)'''结果为:[[[1. 1. 1.]  [1. 1. 1.]  [1. 1. 1.]] [[1. 1. 1.]  [1. 1. 1.]  [1. 1. 1.]]]'''print(array_ones.shape)# 结果为:(2, 3, 3)

    注意:如果将(2,3,3)改为(3,3)

    array_zeros = np.zeros((3, 3))print(array_zeros)'''结果为:[[0. 0. 0.] [0. 0. 0.] [0. 0. 0.]]'''

    其生成的是3行3列的array 

    1.3.2np.arrange()和np.linspace()

    arange([start,] stop[, step,], dtype=None, , like=None)

    返回给定间隔内均匀分布的值。值在半开区间``[start, stop)``(换句话说,包括`start`但不包括`stop`的区间)内生成。对于整数参数,该函数等效于 Python 内置的 `range` 函数,但返回的是 ndarray 而不是列表。当使用非整数步长(例如 0.1)时,结果通常会不一致。对于这些情况,最好使用 `numpy.linspace`。

    linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0)

    在指定的时间间隔内返回均匀分布的数字。返回“num”个均匀分布的样本,在区间 [`start`, `stop`] 上计算。 

    start:序列的起始值。

    stop:序列的结束值,除非 `endpoint` 设置为 False。在这种情况下,序列由除最后一个“num + 1”个均匀分布的样本之外的所有样本组成,因此排除了“stop”。请注意,当 `endpoint` 为 False 时,步长会发生变化。

    num=50:要生成的样本数。默认值为 50。必须为非负数。

    endpoint=True:如果为真,`stop` 是最后一个样本。否则,不包括在内。默认为真。

    retstep=False:如果为 True,则返回 (`samples`, `step`),其中 `step` 是样本之间的间距。

    dtype=None:输出数组的类型。如果 `dtype` 没有给出,数据类型是从 `start` 和 `stop` 推断出来的。推断的 dtype 永远不会是整数;即使参数会产生一个整数数组,也会选择`float`。

    因此以下代码就很容易理解了

    # 生成一个array,从0递增到10,步长为1array_arange = np.arange(10)print(array_arange)# 结果为:[0 1 2 3 4 5 6 7 8 9]# 生成一个array,从0递增到10,步长为2array_arange_1 = np.arange(0, 10, 2)print(array_arange_1)# 结果为:[0 2 4 6 8]# 生成一个array,将0-10等分为5部分array_linspace = np.linspace(0, 10, 5)print(array_linspace)# 结果为:[ 0.   2.5  5.   7.5 10. ]

    1.4Numpy基础计算演示

    import numpy as np# 取绝对值print(np.abs([1, -2, 3, -4]))# [1 2 3 4]# 求正弦值print(np.sin(np.pi/2))# 1.0# 求反正切值print(np.arctan(1))# 0.7853981633974483# 求e的2次方print(np.exp(2))# 7.38905609893065# 求2的三次方print(np.power(2, 3))# 8# 求向量[1,2]与[3,4]的点积print(np.dot([1, 2], [3, 4]))# 11# 求开方print(np.sqrt(4))# 2.0# 求和print(np.sum([1, 2, 3, 4]))# 10# 求平均值print(np.mean([1, 2, 3, 4]))#2.5 # 求标准差print(np.std([1, 2, 3, 4]))# 1.118033988749895

    二、线性代数相关 

    前面我们已经了解到array类型及其基本操作方法,了解array类型可以表示向量、矩阵和多维张量。

    线性代数计算在科学计算领域中非常重要,因此接下来了解以下Numpy提供的线性代数操作

    import numpy as npvector_a = np.array([1, 2, 3])vector_b = np.array([2, 3, 4])# 定义两入向量vector_a与vector_bm = np.dot(vector_a, vector_b)# 将两个向量相乘,在这里也就是点乘,结果为20print(m)n = vector_a.dot(vector_b)print(n)# 将vector_a与vector_b相乘,结果为20o = np.dot(vector_a, vector_b.T)print(o)'''将一个行向量与一个列向量叉乘的结果相当于将两个行向量求点积,这里测试了dot()方法。其中array类型的T()方法表示转置。测试结果表明:dot()方法默认对两个向量求点积。对于符合叉乘格式的矩阵,自动进行又乘。'''# 我们看一下下面这个例子:matrix_a = np.array([[1, 2], [3, 4]])# 定义一个2行2列的方阵matrix_b = np.dot (matrix_a, matrix_a.T)# 这里将该方阵与其转置叉乘,将结果赋予matrix_b变量print(matrix_b)'''结果为:array([[5,11],[11,25]])'''p = np.linalg.nORM([1, 2])print(p)# 求一个向量的范数的值,结果为2.2360679774997898# 如果norm()方法没有指定第2个参数,则默认为求2范数np.linalg.norm([1, -2], 1)# 指定第2个参数值为1,即求1范数。我们在前面介绍过,1范数的结果为向量中各元素绝对值之和,结果为3.0q = np.linalg.norm([1, 2, 3, 4], np. inf)print(q)# 求向量的无穷范数,其中np.inf表示正无穷,也就是向量中元素值最大的那个,其结果为4.0r = np.linalg .norm([1, 2, 3, 4], -np.inf)print(r)# 同理,求负无穷范数的结果为1, 也就是向量中元素的最小值# 求行列式s = np.linalg.det(matrix_a)print(s)# -2.0000000000000004t = np.trace(matrix_a)print(t)# 求矩阵matrix_a的迹,结果为5u = np.linalg.matrix_rank(matrix_a)# 求矩阵的秩,结果为2print(u)v = vector_a * vector_b# 使用*符号将两个向量相乘,是将两个向量中的元素分别相乘,也就是我们所讲到的哈达马乘积print(v)# [ 2  6 12]w = vector_a ** vector_bprint(w)# 使用二元运算符**对两个向量进行操作,结果为array([1, 8, 81],dtype = int32)# 表示将向量vector. a中元素对应vector. b中的元素值求幂运算。例如最终结果[1,8,81]可以表示为[1*1,2*2*2,3*3*3*3]# 求逆矩阵z = np.linalg.inv(matrix_a)print(z)'''[[-2.   1. ] [ 1.5 -0.5]]'''

    三、矩阵的高级函数-随机数矩阵

    Numpy除了为我们提供常规的数学计算函数和矩阵相关操作之外,还提供很多功能丰富的模块,随机数模块就是其中一部分。

    利用随机数模块可以生成随机数矩阵,比python自带的随机数模块功能还要强大。

    import numpy as np# 设置随机数种子np.random.seed()# 从[1,3)中生成一个整型的随机数,连续生成10个a = np.random.randint(1, 3, 10)print(a)# [1 1 1 2 1 1 1 1 2 2]# 若要连续产生[1,3}之间的浮点数,可以使用以下方法:# ①b = 2*np.random.random(10)+1print(b)'''[2.88458839 2.07004167 2.80814156 1.83247535 2.33649809 2.62763357 2.0549351  2.33464915 1.70562208 2.66257726]'''# ②c = np.random.uniform(1, 3, 10)print(c)'''[1.76967412 1.37703868 2.48838004 1.45986254 2.04487418 2.51107658 1.25673115 1.31416097 2.56218317 2.90575438]'''# 生成一个满足正态分布(高斯分布)的矩阵,其维度是4*4d = np. random.normal(size=(4, 4))print(d)'''[[ 0.76164366  0.11588368  0.49221559 -0.28222691] [ 0.47638143 -0.21197541 -1.0776362   0.49241666] [ 0.26038756 -0.20406522  1.11210954 -1.191425  ] [ 0.58255677  1.84047863 -0.21366512 -0.85425828]]'''# 随机产生10个n=5、p=0.5的二项分布数据:e = np.random.binomial(n=5, p=0.5, size=10)print(e)# [1 1 5 2 1 2 1 2 1 2]# 产生一个0到9的序列data = np.arange(10)print(data)# [0 1 2 3 4 5 6 7 8 9]# 从data数据中随机采集5个样本,采集过程是有放回的f = np.random.choice(data, 5)print(f)# [1 7 3 3 4]# 从data数据中随机采集5个样本,采集过程是没有放回的g = np.random.choice(data, 5, replace=False)print(g)# [8 9 1 5 0]# 对data进行乱序h = np.random.permutation(data)print(h)# [8 5 3 9 2 0 4 6 1 7]# 对data进行乱序,并替换为新的datanp.random.shuffle(data)print(data)# [9 7 0 3 8 5 2 1 4 6]

    以上就是“python的numpy模块使用实例分析”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网Python频道。

    --结束END--

    本文标题: python的numpy模块使用实例分析

    本文链接: https://www.lsjlt.com/news/329747.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • python的numpy模块使用实例分析
      今天小编给大家分享一下python的numpy模块使用实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Numpy是Nu...
      99+
      2023-06-30
    • python模块的示例分析
      小编给大家分享一下python模块的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传...
      99+
      2023-06-14
    • HTTP模块实例分析
      本文小编为大家详细介绍“HTTP模块实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“HTTP模块实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、Web服务器什么...
      99+
      2024-04-02
    • Python模块cachetools的示例分析
      Python模块cachetools的示例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。前言cachetools 是一个 Python 模块,提供各种记忆集合和修饰符,包括...
      99+
      2023-06-02
    • Python中os模块和shutil模块的示例分析
      这篇文章将为大家详细讲解有关Python中os模块和shutil模块的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,Pyth...
      99+
      2023-06-06
    • python email模块的使用实例
      在使用python过程中,需要用的email模块来进行邮件的发送和接收,包含自定义邮件的中文、主题、日期、附件等信息,以下是我使用email模块来发送一个测试报告相关信息的邮件的例子: #!/usr/bin/python # -*- co...
      99+
      2023-01-31
      实例 模块 python
    • python中OS模块和time模块的示例分析
      这篇文章将为大家详细讲解有关python中OS模块和time模块的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、OS模块概述Python OS模块包含普遍的操作系统功能。如果你希望你的程序能够...
      99+
      2023-06-15
    • python中sys模块的示例分析
      小编给大家分享一下python中sys模块的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!python版本: Python 2.7.61: sys是pyt...
      99+
      2023-06-14
    • Python模块安装的示例分析
      这篇文章主要为大家展示了“Python模块安装的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Python模块安装的示例分析”这篇文章吧。Python 模块安装一. 打开命令提示符win...
      99+
      2023-06-25
    • python数学建模之Numpy和Pandas应用实例分析
      Numpy 学习# Numpy的基本使用 ''' Numpy提供了两种基本的对象:ndarray存储单一数据类型的多维数组; ufunc是能够对数组进行处理的函数 1-导...
      99+
      2023-05-15
      Python Numpy Pandas
    • Python基础之模块的示例分析
      这篇文章给大家分享的是有关Python基础之模块的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、什么是模块容器 -> 数据的封装函数 -> 语句的封装类 -> 方法和属性的封装模块 ...
      99+
      2023-06-15
    • Python中包与模块的示例分析
      这篇文章主要为大家展示了“Python中包与模块的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Python中包与模块的示例分析”这篇文章吧。什么是 Python 的包与模块包的定义:简...
      99+
      2023-06-29
    • python 安装、配置、使用 xlrd模块、numpy模块、matplotlib、opencv模块
      目录  一、xlrd模块 (一)安装xlrd模块 (二) pycharm 配置xlrd (三) 读取xls格式 (四)xlrd读取时间日期时,会是float类型,需要转换。 二、numpy模块  (一)numpy模块安装---使用清华大学镜...
      99+
      2023-10-23
      python numpy 开发语言
    • Python中Numpy模块使用详解
      目录NumPyndarray对象​ ​Numpy数据类型​​Numpy数组属性NumPy NumPy(Numerical Python) 是 Python 的一个扩展程序库...
      99+
      2024-04-02
    • Python二分查找+字符串模板+textwrap模块实例分析
      今天小编给大家分享一下Python二分查找+字符串模板+textwrap模块实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一...
      99+
      2023-06-30
    • Node.js的模块化开发实例分析
      这篇文章主要讲解了“Node.js的模块化开发实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Node.js的模块化开发实例分析”吧!1.Node.j...
      99+
      2024-04-02
    • Python中urllib爬虫、request模块和parse模块的示例分析
      小编给大家分享一下Python中urllib爬虫、request模块和parse模块的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!urlliburlli...
      99+
      2023-06-14
    • JavaScript模块模式的示例分析
      这篇文章主要介绍了JavaScript模块模式的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体如下:在JS中没有Class的概念...
      99+
      2024-04-02
    • 28 Python的numpy模块
      概述         在上一节,我们介绍了Python的requests模块,包括:发送POST请求、发送GET请求、设置请求头、会话管理等内容。在这一节,我们将介绍Python的numpy模块。numpy模块是Python的一个非常重要的...
      99+
      2023-10-20
      python numpy
    • angular2模块和共享模块的示例分析
      这篇文章主要介绍angular2模块和共享模块的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!创建模块,用到了共享模块PostSharedModule,共享模块里面包含了2个...
      99+
      2024-04-02
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作