Python 快速入门(三)Numpy(1)

Numpy (1)

向前看,仿佛时间悠悠无边;

猛回首,方知生命挥手瞬间。

终于又和大家见面了!昨天刚刚迎来了秋季的最后一个节气,霜降。今天10月24号,是联合国日,也是全世界程序员的节日。嗯,2的10次方是1024,也是计数中的一个常见的值。一查发现,11年前的今天嫦娥一号被送入太空。嗯,很多重要的时间发生在10月24号。

今天还接着和大家分享python快速入门的一些练习。接着上次提到的四个container接着说,在讲numpy 之前,我们简单了解一下函数function和类class的使用。由于科学计算或者AI应用中,遇到类的使用不多,我们简单看一下使用方式,更多信息参考提供的链接。

(以下分析和练习部分参考python官网,scipy 官网,斯坦福大学python入门讲解。)

函数方面,定义的时候,def 关键字打头,因为python变量不用声明类型,自然也跟C语言不同,没有返回类型。然后是函数名和参数,同样,也不需要声明参数类型,然后冒号即可,后面加函数主体。

函数调用的时候,使用函数名和参数调用即可。

更多关于函数的介绍,参考这个了:https://docs.python.org/3.7/tutorial/controlflow.html#defining-functions

类的介绍,就非常简单了。关键字class打头,类名,括号里关键字object,里面包含两个函数,一个initial函数,注意前后是两个下划线,传入两个参数。后面可以自己创造多个函数。具体的更多的知识可以参考官网:https://docs.python.org/3.7/tutorial/classes.html

下面就来一起看一下numpy的常用操作,由于包含的内容很多,numpy我们分两次练习学习。

最基本的:

import numpy as np# 引入numpy

然后:

a = np.array([2, 4, 6])

# 创造一个一维的向量,注意格式,是array,不是arrays,然后用小括号括起来,里面的数组用中括号

值得注意的是有时候矩阵或者数组的操作报错,可能是由于矩阵的size不合适或者不匹配,常用的,调用numpy的shape函数查看其大小。注意shape后面没有括号。

其他需要理解的就是和线性代数里面的矩阵结合起来,行列的空间的想象,尤其遇到多维的情况,比如抽取某一维的所有元素,或者某一部分元素,这些都会经常用到,后面slicing部分会看到。

然后,numpy自带了很多生成特殊数组的函数,比如全0,全1,单位矩阵,元素相同的矩阵,随机矩阵等等。其中随机矩阵在某些初始化随机操作中经常会使用到。

c = np.zeros((2,2))# 两行两列全为0

d = np.ones((1,2))# 创造一个一行两列的全是1的数组

生成了矩阵,然后就是如何访问矩阵中的元素,比如根据索引访问某一个元素,或者访问某一维度的所有元素,像二维矩阵的某一行或者某一列,用到类似于 list的slicing操作,但list的操作没有numpy.array这么强大。还有比如取出某一些索引项的矩阵的值。

print (a[1,2])# 第二行三列的元素

b = a[:, 1:3]# 所有行,1:3 意味着第2,3列,更多维的操作与之类似

注意等号的赋值操作会对原矩阵产生影响,应当注意。

r3 = np.array([i ** 2 for i in r1])

#list 里面的comprehension 也可以在建造np.array的时候使用

前面讲过了如何取出来np.array 的整行或者整列,那么如果想要取出来任意的位置的某些元素怎么办?这就要用到 integer array indexing, 姑且叫做整数索引。来看一下:

然后,更有趣的一种操作,Boolean indexing,布尔索引,设定条件,对于矩阵选择性的选取某些元素。来看一下:

更多内容可以参考官网numpy的详细介绍:https://docs.scipy.org/doc/numpy/user/basics.creation.html#arrays-creation

好,下次接着分析numpy的使用练习。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181024G1XB0800?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券