python矩阵乘法_鱼书——第一章 Python入门

1f289e5aa63a6b38b135cc18cf3c327a.png640?wx_fmt=svg

one 第一章

640?wx_fmt=svg

1.1 Python是什么

Python是一个简单、易读、易记的编程语言,而且是开源的,可以免费地自由使用。Python可以用类似英语的语法编写程序,编译起来也不费力,因此我们可以很轻松地使用Python。特别是对首次接触编程的人士来说,Python是最合适不过的语言。事实上,很多高校和大专院校的计算机课程均采用Python作为入门语言。Python是最适合数据科学领域的编程语言。而且,Python具有受众广的优秀品质,从初学者到专业人士都在使用。因此,为了完成本书的从零开始实现深度学习的目标,Python可以说是最合适的工具。

1.2  Python的安装

Python有2.x和3.x的区别,现在使用的一般均为Python3.x。两个常用的库:NumPy是用于数值计算的库,提供了很多高级的数学算法和便利的数组(矩阵)操作方法。本书中将使用这些便利的方法来有效地促进深度学习的实现。Matplotlib是用来画图的库。使用Matplotlib能将实验结果可视化,并在视觉上确认深度学习运行期间的数据。

1.3Python解释器

可以配置PyCharm进行编写。我对PyCharm的认识大概相当于Rstudio之对于R软件的作用。方便程序的编写、运行调试。在PyCharm界面左下角处点击"Python consolo"就会出来Python的交互页面。也相当于Python解释器的对话模型。

1.3.1 基本运算

*表示乘法,/表示除法,**表示乘方(3**2是3的2次方)。另外,在Python 2.x中,整数除以整数的结果是整数,比如,7 ÷ 5的结果是1。但在Python 3.x中,整数除以整数的结果是小数(浮点数)。

1.3.2 数据类型

编程中有数据类型(data type)这一概念。数据类型表示数据的性质,有整数、小数、字符串等类型。Python中的type()函数可以用来查看数据类型。

1.3.3 变量

可以使用x或y等字母定义变量(variable)。此外,可以使用变量进行计算,也可以对变量赋值。Python是属于“动态类型语言”的编程语言,所谓动态,是指变量的类型是根据情况自动决定的。“#”是注释的意思,它后面的文字会被Python忽略。

1.3.4 列表

除了单一的数值,还可以用列表(数组)汇总数据。

70a66ec76536f716fcb3e9f0be05cbc4.png

元素的访问是通过a[0]这样的方式进行的。[]中的数字称为索引(下标),索引从0开始(索引0对应第一个元素)。此外,Python的列表提供了切片(slicing)这一便捷的标记法。使用切片不仅可以访问某个值,还可以访问列表的子列表(部分列表)。

1.3.5 字典

列表根据索引,按照0, 1, 2, ...的顺序存储值,而字典则以键值对的形式存储数据。字典就像《新华字典》那样,将单词和它的含义对应着存储起来。

e9839acea6f843c8627c7e52e55d2fa8.png

1.3.6 布尔型

Python中有bool型。bool型取True或False中的一个值。针对bool型的运算符包括and、or和not (针对数值的运算符有+、-、*、/等,根据不同的数据类型使用不同的运算符)。

376e561dff020fb0ad0ecb18a0b7c84b.png

1.3.7 if语句

根据不同的条件选择不同的处理分支时可以使用if/else语句。
>>> hungry = True>>> if hungry:...     print("I’m so hungry.")...     I’m so hungry.>>> hungry = False>>> if hungry:...     print("I’m so hungry.")... else:...     print("I’m not hungry at all.")...     print("I'm tired.")...     I’m not hungry at all.I'm tired.
Python中的空白字符具有重要的意义。上面的if语句中,if hungry:下面的语句开头有4个空白字符。它是缩进的意思,表示当前面的条件(if hungry)成立时,此处的代码会被执行。这个缩进也可以用tab表示,Python中推荐使用空白字符。

1.3.8 for 语句

进行循环处理时可以使用for语句,可以按顺序访问列表等数据集合中的各个元素。
>>> for i in ["I","am","not","a","good","guy"]:...     print(i)...     Iamnotagoodguy

1.3.9 函数

可以将一连串的处理定义成函数 (function)。
>>> def hello():...     print("Hello World!")...     hello()Hello World!
此外,函数可以取参数。
>>> def hello(object):...     print("Hello " + object + "!")...>>> hello("cat")Hello cat!

1.4  NumPy

>>> import numpy as np
Python中使用import语句来导入库。这里的import numpy as np,直译的话就是“将numpy作为np导入”的意思。通过写成这样的形式,之后NumPy相关的方法均可通过np来调用。要生成NumPy数组,需要使用np.array()方法。np.array()接收Python列表作为参数,生成NumPy数 组(numpy.ndarray)。
>>> x = np.array([1.0, 2.0, 3.0])>>> print(x)[ 1. 2. 3.]>>> type(x)<class 'numpy.ndarray'>
下面是NumPy数组的算术运算的例子。
>>> x = np.array([1.0, 2.0, 3.0])>>> y = np.array([2.0, 4.0, 6.0])>>> x + y  # 对应元素的加法array([ 3.,  6., 9.])>>> x - yarray([ -1.,  -2., -3.])>>> x * y  # element-wise productarray([  2.,   8.,  18.])>>> x / yarray([ 0.5,  0.5,  0.5])
这里需要注意的是,数组x和数组y的元素个数是相同的(两者均是元素个数为3的一维数组)。当x和y的元素个数相同时,可以对各个元素进行算术运算。如果元素个数不同,程序就会报错,所以元素个数保持一致非常重要。另外,“对应元素的”的英文是element-wise,比如“对应元素的乘法”就是element-wise product。NumPy数组不仅可以进行element-wise运算,也可以和单一的数值(标量)组合起来进行运算。此时,需要在NumPy数组的各个元素和标量之间进行运算。
>>> x = np.array([1.0, 2.0, 3.0])>>> x / 2.0array([ 0.5,  1. ,  1.5]
NumPy不仅可以生成一维数组(排成一列的数组),也可以生成多维数组。
>>> A = np.array([[1, 2], [3, 4]])>>> print(A)[[1 2] [3 4]]>>> A.shape(2, 2)>>> A.dtypedtype('int64')
矩阵A的形状可以通过shape查看,矩阵元素的数据类型可以通过dtype查看。NumPy中,形状不同的数组之间也可以进行运算。之前的例子中,在2×2的矩阵A和标量10之间进行了乘法运算。在这个过程中,如图1-1所示,标量10被扩展成了2 × 2的形状,然后再与矩阵A进行乘法运算。这个巧妙的功能称为广播 (broadcast)。

21272c69174793114fef3eed90960dfd.png

我们通过下面这个运算再来看一个广播的例子。
>>> A = np.array([[1, 2], [3, 4]])>>> B = np.array([10, 20])>>> A * Barray([[ 10, 40],       [ 30, 80]])

1.5  Matplotlib

在深度学习的实验中,图形的绘制和数据的可视化非常重要。Matplotlib是用于绘制图形的库,使用Matplotlib可以轻松地绘制图形和实现数据的可视化。这里,我们来介绍一下图形的绘制方法和图像的显示方法。可以使用matplotlib的pyplot模块绘制图形。话不多说,我们来看一个绘制sin函数曲线的例子。
import numpy as npimport matplotlib.pyplot as plt# 生成数据x = np.arange(0, 6, 0.1) # 以0.1为单位,生成0到6的数据y = np.sin(x)# 绘制图形plt.plot(x, y)plt.show()

就会得到图1-3:

db7880e7e1d43a9c9ce797d2e83c72d8.png

在刚才的sin函数的图形中,我们尝试追加cos函数的图形,并尝试使用pyplot的添加标题和x轴标签名等其他功能。
import numpy as npimport matplotlib.pyplot as plt# 生成数据x = np.arange(0, 6, 0.1) # 以0.1为单位,生成0到6的数据y1 = np.sin(x)y2 = np.cos(x)# 绘制图形plt.plot(x, y1, label="sin")plt.plot(x, y2, linestyle = "--", label="cos") # 用虚线绘制plt.xlabel("x") # x轴标签plt.ylabel("y") # y轴标签plt.title('sin & cos') # 标题plt.legend()plt.show()

就会得到图1-4:

37d558b208476e688047f4c04401003d.png

今天就到这里啦!

大家都要加油鸭!

春风不度玉门关,

我佛不渡铁憨憨。

雕栏玉砌应犹在,

点赞完了点在看。

  - end -  

图文源鱼书

公众号:一枝花满楼

7b75381ed4887a1e33dece36316690df.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/396869.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入浅出面向对象分析与设计

深入浅出面向对象分析与设计书籍 下载位置&#xff1a;http://pan.baidu.com/s/1o7gmmuu转载于:https://www.cnblogs.com/wlming/p/5160140.html

[SHOI2002]百事世界杯之旅

题目&#xff1a;“……在2002年6月之前购买的百事任何饮料的瓶盖上都会有一个百事球星的名字。只要凑齐所有百事球星的名字&#xff0c;就可参加百事世界杯之旅的抽奖活动&#xff0c;获得球星背包&#xff0c;随声听&#xff0c;更克赴日韩观看世界杯。还不赶快行动&#xff…

Oracle adviser,Oracle10g SQL tune adviser

Oracle10g SQL tune adviser简单介绍本文简单介绍下SQL Tuning Adviser的配置使用方法和一些相关知识点&#xff0c;如果了解SQL Tuning Adviser详细信息&#xff0c;参看Oracle联机文档。本文对分析结果没有详细分析。一、自动SQL Tuning简单介绍&#xff1a;1、优化模式&…

考托福

todo 香港的博士 转载于:https://www.cnblogs.com/dunfentiao/p/5164028.html

keepalived vip ping不通_【干货分享】OpenStack LVS负载均衡为什么不通?

背景介绍OpenStack环境Neutron 的安全组会向虚拟机默认添加 anti-spoof 的规则&#xff0c;将保证虚拟机只能发出&#xff0f;接收以本机Port为原地址或目的地址(IP、MAC)的流量&#xff0c;提高了云的安全性。但是LVS等需要绑定VIP的场景&#xff0c;默认流量是被拦截的。需要…

Docker安装ssh,supervisor等基础工具

2019独角兽企业重金招聘Python工程师标准>>> Docker安装ssh&#xff0c;supervisor等基础工具 需要提前下载好官方的ubuntu镜像&#xff0c;我这里使用的是ubuntu:14.04版本&#xff0c;这里安装了一些基础的工具ssh&#xff0c;curl&#xff0c;wget&#xff0c;vi…

中南大学 oracle试卷,数据库原理期末复习(中南大学)数据库原理、技术及应用2.ppt...

2014 春季 信息11,12 DB P,T&A-张祖平 数据库原理、技术及应用 张祖平/Zhang Zuping 电子信息工程系 School of Information Science and Engineering,Central South University , zpzhangmail.csu.edu.cn 本章小结 关系模型中的相关概念 关系(集合)&#xff0c;性质&#…

Pandas时间差(Timedelta)

时间差(Timedelta)是时间上的差异&#xff0c;以不同的单位来表示。例如&#xff1a;日&#xff0c;小时&#xff0c;分钟&#xff0c;秒。它们可以是正值&#xff0c;也可以是负值。可以使用各种参数创建Timedelta对象&#xff0c;如下所示 - 字符串 通过传递字符串&#xff0…

nginx集群_windows环境下搭建简单Nginx+Tomcat集群

通俗点将&#xff0c;负载均衡就是因为访问流量太大&#xff0c;导致项目访问不流畅、甚至宕掉&#xff0c;所以通过一种分流的方式来缓解这种情况。一、 工具nginx-1.8.0apache-tomcat-6.0.33二、 目标实现高性能负载均衡的Tomcat集群&#xff1a;三、 步骤1、首先下载Nginx&a…

颜色传感器TCS230及颜色识别电路(转)

摘要 TCS230是美国TAOS公司生产的一种可编程彩色光到频率的传感器。该传感器具有分辨率高、可编程的颜色选择与输出定标、单电源供电等特点&#xff1b;输出为数字量&#xff0c;可直接与微处理器连接。文中主要介绍TCS230的原理和应用&#xff0c;以及色光和白平衡的知识&…

自定义对话框 提示:Unable to add window token null is not for an application

这是因为在new Dialog(context);的时候传入的context是通过getApplicationContext()获得的&#xff0c;这样就会报错。 把context的获得方式改为MainActivity.this就好了。 转载于:https://www.cnblogs.com/qlong8807/p/5167560.html

[51Nod 1218] 最长递增子序列 V2 (LIS)

传送门 Description 数组A包含N个整数。设S为A的子序列且S中的元素是递增的&#xff0c;则S为A的递增子序列。如果S的长度是所有递增子序列中最长的&#xff0c;则称S为A的最长递增子序列&#xff08;LIS&#xff09;。A的LIS可能有很多个。例如A为&#xff1a;1 3 2 0 4&#…

linux如何全局搜索目录,Linux 全目录全文搜索

文件内容搜索1grep -r root /home/ray/dev/media/wyquery/*通过这种方法来寻找数据库配置文件的目录其他$ grep “被查找的字符串” 文件名例子&#xff1a;在当前目录里第一级文件夹中寻找包含指定字符串的.in文件grep “thermcontact” */*.in从文件内容查找与正则表达式匹配…

mysql命令行导入和导出数据

首先打开命令窗口,输入命令:mysql -h localhost -u selffabu -p 连接成功后,进行下面的操作 MySQL中导出CSV格式数据的SQL语句样本如下&#xff1a; Sql代码select * from test_info into outfile /tmp/test.csv fields terminated by , optionally enclosed by " esc…

Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)

http://www.jb51.net/article/15714.htm 1. copy.copy 浅拷贝 只拷贝父对象&#xff0c;不会拷贝对象的内部的子对象。2. copy.deepcopy 深拷贝 拷贝对象及其子对象 一个很好的例子&#xff1a; 1 import copy2 a [1, 2, 3, 4, [a, b]] #原始对象3 4 b a #赋值&#xff0c…

7.组件连线(贝塞尔曲线)--从零起步实现基于Html5的WEB设计器Jquery插件(含源码)...

上节讲到如何创建组件&#xff0c;清除设计器视图&#xff0c;以及设计视图的持久化和恢复&#xff0c;本节将重点讲如何实现组件间的连线&#xff0c;前面章节有提到为了方便从持久化文件中恢复&#xff0c;组件和连线是分别存放的&#xff1a;nodes和lines对象&#xff0c;两…

linux bind命令,LINUX命令bind-系统管理-显示或设置键盘按键与其相关的功能

bind命令 用于显示和设置命令行的键盘序列绑定功能。通过这一命令&#xff0c;可以提高命令行中操作效率。您可以利用bind命令了解有哪些按键组合与其功能&#xff0c;也可以自行指定要用哪些按键组合。语法bind(选项)选项-d&#xff1a;显示按键配置的内容&#xff1b;-f&…

定位排查工作流的计算结果数据量不符合预期的方法

近期有发现一些用户在咨询&#xff0c;为什么数据从数据源出来后&#xff0c;经过了一些计算&#xff0c;结果不符合预期了。最常见的是说&#xff0c;为什么我的数据在Mysql里有xx条&#xff0c;怎么到MaxCompute里算了下结果变了。因为这是两个不同的系统&#xff0c;我们又没…

canvas 插件_基于canvas的JavaScript 二维码生成工具——QRCanvas

介绍在我们日常的开发中&#xff0c;特别是在现代的社会环境下&#xff0c;二维码的应用可谓是丰富多彩&#xff0c;各种各样让人眼花缭乱的二维码&#xff0c;可见二维码已经渗透进我们生活的方方面面&#xff0c;也可以说目二维码确确实实方便了我们的生活。因为作为开发人员…

spring cloud feign 上传文件报not a type supported by this encoder解决方案

上传文件调用外部服务报错&#xff1a; not a type supported by this encoder 查看SpringFormEncoder类的源码&#xff1a; 1 public class SpringFormEncoder extends FormEncoder2 {3 4 public SpringFormEncoder()5 {6 this(((Encoder) (new feign.codec.…