前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >技术角 | 深度学习之《深度学习入门》学习笔记(一)Python入门

技术角 | 深度学习之《深度学习入门》学习笔记(一)Python入门

作者头像
ZNing
发布2020-05-13 15:55:56
1K0
发布2020-05-13 15:55:56
举报
文章被收录于专栏:ZNing·腾创库ZNing·腾创库

最近学习吴恩达《Machine Learning》课程以及《深度学习入门:基于Python的理论与实现》书,一些东西总结了下。现就后者学习进行笔记总结。本文是本书的学习笔记(一)Python入门。

目录

▪ NumPy

▪ Matplotlib

NumPy

代码语言:javascript
复制
import sys, os
sys.path.append('../input/deeplearningfromscratch/deeplearningfromscratch')  # 为了导入父目录中的文件而进行的设定

import numpy as np
x= np.array([1.0, 2.0, 3.0])
print(x)

[1. 2. 3.]

代码语言:javascript
复制
type(x)

numpy.ndarray

代码语言:javascript
复制
# 下面是NumPy数组的算术运算例子
x = np.array([1.0, 2.0, 3.0])
y = np.array([2.0, 3.0, 4.0])
print(x + y)
print(x - y)
print(x * y) # element-wise porduct
print(x / y)

[3. 5. 7.] [-1. -1. -1.] [ 2. 6. 12.] [0.5 0.66666667 0.75 ]

当x和y的元素个数相同时,可以对各个元素进行算术运算。如果元素个数不同,程序就会报错。所以元素个数保持一致非常重要

另外,对应元素的英文是element-wise,比如“对应元素的乘法”就是element-wisse product

NumPy数组也可以和单一的数值(标量)组合起来进行运算。此时,需要在NumPy数组的各个元素和标量之间进行运算。这个功能也被称为广播

代码语言:javascript
复制
x = np.array([1.0, 2.0, 3.0])
print(x / 2.0)

[0.5 1. 1.5]

代码语言:javascript
复制
# NumPy的多维数组
A = np.array([[1, 2],[3, 4]])
print(A)

[[1 2] [3 4]]

矩阵的形状可以通过shape查看,矩阵元素的数据类型可以通过dtype查看

代码语言:javascript
复制
A.shape

(2, 2)

代码语言:javascript
复制
A.dtype

dtype('int64')

代码语言:javascript
复制
# 矩阵的算术运算
B = np.array([[3, 0],[0,6]])
A+B

array([[ 4, 2], [ 3, 10]])

代码语言:javascript
复制
A*B

array([[ 3, 0], [ 0, 24]])

同样,矩阵也可以通过标量(单一数值)对矩阵进行算术运算,这也是基于广播的功能

代码语言:javascript
复制
print(A)
A*10

[[1 2] [3 4]]

array([[10, 20], [30, 40]])

在上面这个例子中,标量10被扩展成了2x2的形状,然后再与矩阵A进行乘法运算。这个巧妙的功能称为广播

代码语言:javascript
复制
# 一个广播的例子
A = np.array([[1, 2], [3, 4]])
B = np.array([10, 20])
A * B

array([[10, 40], [30, 80]])

上面这个运算中,一维数组B被巧妙地变成了和二维数组A相同的形状,然后再以对应元素的方式进行计算。

综上,因为NumPy有广播功能,所以不同形状的数组之间也可以顺利地进行运算。

代码语言:javascript
复制
# 访问元素
X = np.array([[51, 55],[14,19],[0,4]])
print(X)

[[51 55] [14 19] [ 0 4]]

代码语言:javascript
复制
for row in X:
    print(row)

[51 55] [14 19] [0 4]

代码语言:javascript
复制
# 使用数组访问各个元素
X = X.flatten() # 将X转换为一维数组
print(X)

[51 55 14 19 0 4]

代码语言:javascript
复制
X[np.array([0,2,4])] #获取索引为0、2、4的元素

array([51, 14, 0])

代码语言:javascript
复制
# 从X中抽取大于15的元素
X > 15

array([ True, True, False, True, False, False])

代码语言:javascript
复制
X[X>15]

array([51, 55, 19])

对NumPy数组使用不等号运算符等(上例中是X>15),结果会得到一个布尔型的数组。上例中就是使用这个布尔型数组取出了数组的各个元素(取出True对应的元素)。

Matplotlib

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt
代码语言:javascript
复制
#生成数据
x = np.arange(0, 6, 0.1) #生成0-6的数据,步长为0.1
y = np.sin(x)
#绘制图像
plt.plot(x,y)
plt.show()

代码语言:javascript
复制
# 尝试追加cos函数的图形,并尝试使用pyplot的添加标题和x轴标签名等其他功能
y2 = np.cos(x)

plt.plot(x, y, label="sin")
plt.plot(x, y2, linestyle = "--", label="cos")#用虚线绘制
plt.xlabel("x")
plt.ylabel("Y")
plt.title('sin & cos')
plt.legend()
plt.show()

pyplot中还提供了用于显示图像的方法imshow()。另外,可以使用matplotlib.image模块的imread()方法读入图像。

代码语言:javascript
复制
from matplotlib.image import imread
img = imread('../input/lixiangzhilu/1.jpg')
plt.imshow(img)

<matplotlib.image.AxesImage at 0x7f08bf324cf8>

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 慧响 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档