Numpy

Numpy

Numpy是Python中用于科学计算的核心库。它提供了高性能的多维数组对象,以及相关工具。(本文文末的原文链接为numpy的官方文档)

NumPy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix))。包括:1、一个强大的N维数组对象Array;2、比较成熟的(广播)函数库;3、用于整合C/C++和Fortran代码的工具包;4、实用的线性代数、傅里叶变换和随机数生成函数。numpy和稀疏矩阵运算包scipy配合使用更加方便。提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。

数组

一个numpy数组是一个由不同数值组成的网格。网格中的数据都是同一种数据类型,可以通过非负整型数的元组来访问。维度的数量被称为数组的阶,数组的大小是一个由整型数构成的元组,可以描述数组不同维度上的大小。

我们可以从列表创建数组,然后利用方括号访问其中的元素:

另外还有以下方式创建初始数组

np.ones((m,n))

np.zeros((m,n))

np.eye(n)

np.full((m,n),k)

np.random.random((m,n))

访问数组

Numpy提供了多种访问数组的方法。其中切片语法是numpy数组中重要的一种数组访问方式。因为数组可以是多维的,所以你必须为每个维度指定好切片。如下所示。

当我们使用切片语法访问数组时,得到的总是原数组的一个子集。整型数组访问允许我们利用其它数组的数据构建一个新的数组。

数学计算

基本数学计算函数会对数组中元素逐个进行计算,既可以利用操作符重载,也可以使用函数方式。

这儿一定要注意*是点乘,并不是矩阵乘,真正的矩阵乘如下所示。

广播机制

广播是一种强有力的机制,它让Numpy可以让不同大小的矩阵在一起进行数学计算。我们常常会有一个小的矩阵和一个大的矩阵,然后我们会需要用小的矩阵对大的矩阵做一些计算。

对两个数组使用广播机制要遵守下列规则:

1. 如果数组的秩不同,使用1来将秩较小的数组进行扩展,直到两个数组的尺寸的长度都一样。

2. 如果两个数组在某个维度上的长度是一样的,或者其中一个数组在该维度上长度为1,那么我们就说这两个数组在该维度上是相容的。

3. 如果两个数组在所有维度上都是相容的,他们就能使用广播。

4. 如果两个输入数组的尺寸不同,那么注意其中较大的那个尺寸。因为广播之后,两个数组的尺寸将和那个较大的尺寸一样。

5. 在任何一个维度上,如果一个数组的长度为1,另一个数组长度大于1,那么在该维度上,就好像是对第一个数组进行了复制。

具体细节需要的请查看官方文档:

https://docs.scipy.org/doc/numpy/reference/

参考博文:知乎-智能单元(https://zhuanlan.zhihu.com/p/20878530?refer=intelligentunit)

原文发布于微信公众号 - 机器学习算法与Python学习(guodongwei1991)

原文发表时间:2016-12-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏算法channel

Tensorflow|通过Variable及assign()感悟一点设计之道

01 Variable a = tf.Variable(2, name="scalar") # create variable a with scalar v...

2.2K70
来自专栏深度学习之tensorflow实战篇

Python中的random模块用于生成随机数

Python中的random模块用于生成随机数。下面介绍一下random模块中最常用的几个函数。 random.random random.random(...

37270
来自专栏AI派

TensorFlow修炼之道(2)——变量(Variable)

变量(Variable)是 TensorFlow 中程序处理的共享持久状态的最佳方法。与常量不同的时,常量创建后,值便无法更改,但是变量创建后 可以修改。并且修...

36340
来自专栏C/C++基础

迷宫问题(maze problem)——深度优先(DFS)与广度优先搜索(BFS)求解

给定一个迷宫,指明起点和终点,找出从起点出发到终点的有效可行路径,就是迷宫问题(maze problem)。

2.1K20
来自专栏数据结构与算法

1265. [NOIP2012] 同余方程

1265. [NOIP2012] 同余方程 ★☆   输入文件:mod.in   输出文件:mod.out 简单对比 时间限制:1 s   内存限制:128 M...

34760
来自专栏mathor

LeetCode342. 4的幂

 这是上一道题2的幂的进阶,首先我们看和2的幂有什么不同。2的幂有1,2,4,8......,而4的幂有1,4,16,64,也就是说少了2,8,32......

9820
来自专栏深度学习之tensorflow实战篇

python 对矩阵进行复制操作 np.repeat 与 np.tile区别

python 对矩阵进行复制操作 np.repeat 与 np.tile区别 二者区别 二者执行的是均是复制操作; np.repeat:复制的是多维数组的...

610100
来自专栏数据结构与算法

P1008 三连击

题目背景 本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序。 题目描述 将1,2,…,9共9个数分成三组,分别组成...

43690
来自专栏西枫里博客

单数据和批量数据的删除操作

通常对某条数据的删除和某一批数据的删除分别采用两个成员方法。这样太累赘了一些,为了使用批量删除的成员方法,就需要构造单数据的结构。这里以ID为数组作为例子

10030
来自专栏用户2442861的专栏

awk工作常用技巧

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/d...

10220

扫码关注云+社区

领取腾讯云代金券