广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python科学计算之NumPy入门教程
  • 543
分享到

Python科学计算之NumPy入门教程

入门教程科学Python 2022-06-04 18:06:23 543人浏览 薄情痞子

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

摘要

前言 NumPy是python用于处理大型矩阵的一个速度极快的数学库。它允许你在Python中做向量和矩阵的运算,而且很多底层的函数都是用C写的,你将获得在普通Python中无法达到的运行速度。这是由于矩

前言

NumPy是python用于处理大型矩阵的一个速度极快的数学库。它允许你在Python中做向量和矩阵的运算,而且很多底层的函数都是用C写的,你将获得在普通Python中无法达到的运行速度。这是由于矩阵中每个元素的数据类型都是一样的,这也就减少了运算过程中的类型检测。

矩阵基础

在 numpy 包中我们用数组来表示向量,矩阵和高阶数据结构。他们就由数组构成,一维就用一个数组表示,二维就是数组中包含数组表示。

创建


# coding: utf-8
import numpy as np

a = np.array([
 [1.73, 1.68, 1.71, 4],
 [1, 2, 3, 4],
 [1, 2, 3, 4]
])
print type(a) # <type 'numpy.ndarray'>

ndarray (N-dimensional array object) 意思就是n维数组。例子中就表示一个3行4列的二维数组。

形状

数组的大小可以通过其 shape 属性获得:


print a.shape # (3L,4L)

数组的元素数量可以通过 ndarray.size 得到:


print a.size # 12

使用 ndarray 的 dtype 属性我们能获得数组元素的类型:


print a.dtype # float64

可以用过 shape 重新设置矩阵的形状或者通过 reshape 方法创建一个改变了尺寸的新数组,原数组的shape保持不变:


a.shape = 4, 3
b = a.reshape((2, 6))
# 尽管b的形状是新的,但是a和b是共享数据存储内存区域的,如果b[0][1] = 8 那么a[0][1] 也会是8

数组生成

可以用过 np.arange 来创建数组,参数与range类似:


x = np.arange(0, 10, 1) # arguments: start, stop, step

也可以用 np.linspace 创建等差数列:


x = np.linspace(1, 10, 5) # arguments: start, stop, num元素个数
# [ 1. 3.25 5.5 7.75 10. ]

# np.logspace 是创建等比数列

矩阵运算

计算将变量直接参与运算符,操作符优先级不变:


a = np.random.rand(5, 5)
b = np.random.rand(5, 5)

print a + b
print a - b
print a * b
print a / b
print a ** 2
print a < b
print a > b

一个数组中除了 dot() 函数,其他这些操作都是单元操作。


np_arr = np.array([2,3,34,5,5])
print np.mean(np_arr) # 平均数
print np.median(np_arr) # 中位数
print np.corrcoef(a[0], a[1]) # 判断两个轴的数据是否有相关性
print np.std(np_arr) # 标准差

数据提取

切片索引语法:M[lower:upper:step]


a = np.array([1,2,3,4,5])
a[1:3] # array([2, 3])

# 进行切片赋值时,原数组会被修改
a[1:3] = [-2, -3] # array([ 1, -2, -3, 4, 5])


b = np.random.rand(5, 5)
b[1:4, 1:4] # 提取 1~4 行,1~4列

b > 0.1 #array([False, False, False, ...])
# 因此要提取可以用, 这是利用了布尔屏蔽这个特性
b[ b > 0.1 ]

# where()函数是另一个有用的方式,当需要以特定条件来检索数组元素的时候。只需要传递给它一个条件,它将返回符合条件的元素列表。
c = np.where(b > 0.1)

矩阵运算

NumPy和Matlab不一样,对于多维数组的运算,缺省情况下并不使用矩阵运算,如果你希望对数组进行矩阵运算的话,可以调用相应的函数。

matrix对象

numpy库提供了matrix类,使用matrix类创建的是矩阵对象,它们的加减乘除运算缺省采用矩阵方式计算,因此用法和matlab十分类似。但是由于NumPy中同时存在ndarray和matrix对象,因此用户很容易将两者弄混。这有违Python的“显式优于隐式”的原则,因此并不推荐在较复杂的程序中使用matrix。


>>> a = np.matrix([[1,2,3],[5,5,6],[7,9,9]])
>>> a*a**-1
matrix([[ 1.00000000e+00, 1.66533454e-16, -8.32667268e-17],
  [ -2.77555756e-16, 1.00000000e+00, -2.77555756e-17],
  [ 1.66533454e-16, 5.55111512e-17, 1.00000000e+00]])

从数组转换为矩阵可以用m = np.matrix(a) 进行转换, 使用 m.T 可以得到m的转置矩阵。

矩阵求逆


m.I * m
=> matrix([[ 1.00000000e+00+0.j, 4.44089210e-16+0.j],
   [ 0.00000000e+00+0.j, 1.00000000e+00+0.j]])

浅拷贝与深拷贝

为了获得高性能,Python 中的赋值常常不拷贝底层对象,这被称作浅拷贝。使用 copy 进行深拷贝:


b = copy(a)

遍历数组元素

通常情况下,我们是希望尽可能避免遍历数组元素的。因为迭代相比向量运算要慢的多。但是有些时候迭代又是不可避免的,这种情况下用 Python 的 for 是最方便的:


v = np.array([1,2,3,4])

for element in v:
 print(element)

M = np.array([[1,2], [3,4]])

for row in M:
 print("row", row)
 for element in row:
  print(element)

总结

以上就是关于Python科学计算之NumPy的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

--结束END--

本文标题: Python科学计算之NumPy入门教程

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

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

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

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

下载Word文档
猜你喜欢
  • Python科学计算之NumPy入门教程
    前言 NumPy是Python用于处理大型矩阵的一个速度极快的数学库。它允许你在Python中做向量和矩阵的运算,而且很多底层的函数都是用C写的,你将获得在普通Python中无法达到的运行速度。这是由于矩...
    99+
    2022-06-04
    入门教程 科学 Python
  • 【Python】科学计算库Scipy简易入门
    0.导语 Scipy是一个用于数学、科学、工程领域的常用软件包,可以处理插值、积分、优化、图像处理、常微分方程数值解的求解、信号处理等问题。它用于有效计算Numpy矩阵,使Numpy和Scipy协同工作,高效解决问题。 Scipy是由针...
    99+
    2023-10-12
    python scipy 开发语言
  • Python科学计算之Pandas详解
    起步 Pandas最初被作为金融数据分析工具而开发出来,因此 pandas 为时间序列分析提供了很好的支持。 Pandas 的名称来自于面板数据(panel data)和python数据分析 (data ...
    99+
    2022-06-04
    详解 科学 Python
  • python入门之算法学习
    前言 参考学习书籍:《算法图解》[美]Aditya Bhargava,袁国忠(译)北京人民邮电出版社,2017 二分查找 binary_search 实现二分查找的python代码...
    99+
    2022-11-12
  • Python NumPy教程之二元计算详解
    二元运算符作用于位,进行逐位运算。二元运算只是组合两个值以创建新值的规则。 numpy.bitwise_and(): 此函数用于计算两个数组元素的按位与。 此函数计算输入数组中整数的...
    99+
    2022-11-11
  • Python科学计算学习之高级数组(二)
    代码性能和向量化   背景:Python是一种解释型的编程语言,基本的python代码不需要任何中间编译过程来得到机器代码,而是直接执行。而对于C、C++等编译性语言就需要在执行代码前将其编译为机器指令。 但是,解释型代码的速度比编译...
    99+
    2023-01-31
    数组 高级 科学
  • 科学计算NumPy之Ndarray运算函数操作示例汇总
    目录NumPy比较运算符NumPy逻辑运算符逻辑与逻辑或逻辑异或逻辑非NumPy逻辑运算函数logical_and()函数np.logical_or()函数logical_not()...
    99+
    2023-05-18
    NumPy Ndarray运算函数 NumPy Ndarray操作汇总
  • python之selenium入门教程
    selenium,一个第三方库,可以通过给driver发送命令来操作浏览器,以达到模拟人操作浏览器,实现网页自动化、测试等,减少了重复性工作。 selenium的工作的基本架构如下: 安装 本文是在...
    99+
    2023-09-11
    python selenium
  • python扩展库numpy入门教程
    目录一、numpy是什么?二、numpy数组2.1 数组使用2.2 创建数组1. 使用empty创建空数组2. 使用arange函数创建3. 使用zeros函数生成数组4. ones...
    99+
    2022-11-12
  • Python入门教程(三十九)Python的NumPy安装与入门
    目录安装 NumPy导入 NumPyNumPy as np检查 NumPy 版本安装 NumPy 如果你已经在系统上安装了 Python 和 PIP,那么安装 NumPy 非常容易。...
    99+
    2023-05-12
    Python NumPy安装 Python NumPy入门
  • Python入门教程之运算符与控制流
    Python 中的运算符 什么是运算符?举个简单的例子 4 +5 = 9 。 例子中,4 和 5 被称为操作数,"+" 称为运算符。 1 . 求幂运算符 在 Java 中如果我们想对一个数进行求幂运算,我...
    99+
    2022-06-04
    运算符 入门教程 Python
  • Python入门教程之运算符重载详解
    目录如何重载Python中的运算符在 Python中重载比较运算符重载相等和小于运算符用于运算符重载的 Python 魔术方法或特殊函数二元运算符比较运算符赋值运算符一元运算符运算符...
    99+
    2022-11-11
  • Python画图学习入门教程
    本文实例讲述了Python画图的基本方法。分享给大家供大家参考,具体如下: Python:使用matplotlib绘制图表 python绘制图表的方法,有个强大的类库matplotlib,可以制作出高质量的...
    99+
    2022-06-04
    画图 入门教程 Python
  • Apache Solr入门教程(初学者之旅)
    作者 | 胡海超的博客 来源 | https://blog.csdn.net/u011936655/article/details/51960005 写在前面:本文涉及solr入门的各方面,请逐行阅读,相信能帮助你对solr有个清晰全面的了...
    99+
    2021-02-17
    Apache Solr入门教程(初学者之旅)
  • Python学习入门基础教程(learn
     在Python里可以自定义函数,实现某特定功能,这里首先要区分一下函数的定义和函数的调用两个基本概念,初学者往往容易混淆。      函数的定义是指将一堆能实现特定功能的语句用一个函数名标识起来,而函数的调用则是通过函数名来使用这一堆语句...
    99+
    2023-01-31
    基础教程 入门 Python
  • Python学习入门基础教程(lear
      在if分支判断语句里的条件判断语句不一定就是一个表达式,可以是多个(布尔)表达式的组合关系运算,这里如何使用更多的关系表达式构建出一个比较复杂的条件判断呢?这里需要再了解一下逻辑运算的基础知识。逻辑关系运算有以下几种运算符.     ...
    99+
    2023-01-31
    基础教程 入门 Python
  • 云计算教程学习入门视频课件:Load Balance讲解
    负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务...
    99+
    2023-06-03
  • 云计算教程学习入门视频课件:云计算终端技术讲解
    IT 的概念即信息技术,其中“I”代表信息(或数据),“T”代表技术(或计算),技术是用来处理信息的,所以说 I 是目的,T 是手段,T 是为 I 服务的。与 T 关联的安全主要是“计算可用性”,如果由于 T 的原因,人们无法处理 I,那么...
    99+
    2023-06-03
  • spring cloud学习入门之config配置教程
    前言本文主要给大家分享了关于spring cloud的入门教程,主要介绍了config配置的相关内容,下面话不多说了,来一起看看看详细的介绍吧。简介Spring cloud config 分为两部分 server client conf...
    99+
    2023-05-31
    spring cloud config配置
  • Python机器学习入门(五)之Python算法审查
    目录1.审查分类算法1.1线性算法审查1.1.1逻辑回归1.1.2线性判别分析1.2非线性算法审查1.2.1K近邻算法1.2.2贝叶斯分类器1.2.3分类与回归树1.2.4支持向量机...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作