专栏首页ZNing·腾创库技术角 | 深度学习之《深度学习入门》学习笔记(一)Python入门

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

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

目录

▪ NumPy

▪ Matplotlib

NumPy

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.]

type(x)

numpy.ndarray

# 下面是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数组的各个元素和标量之间进行运算。这个功能也被称为广播

x = np.array([1.0, 2.0, 3.0])
print(x / 2.0)

[0.5 1. 1.5]

# NumPy的多维数组
A = np.array([[1, 2],[3, 4]])
print(A)

[[1 2] [3 4]]

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

A.shape

(2, 2)

A.dtype

dtype('int64')

# 矩阵的算术运算
B = np.array([[3, 0],[0,6]])
A+B

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

A*B

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

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

print(A)
A*10

[[1 2] [3 4]]

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

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

# 一个广播的例子
A = np.array([[1, 2], [3, 4]])
B = np.array([10, 20])
A * B

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

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

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

# 访问元素
X = np.array([[51, 55],[14,19],[0,4]])
print(X)

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

for row in X:
    print(row)

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

# 使用数组访问各个元素
X = X.flatten() # 将X转换为一维数组
print(X)

[51 55 14 19 0 4]

X[np.array([0,2,4])] #获取索引为0、2、4的元素

array([51, 14, 0])

# 从X中抽取大于15的元素
X > 15

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

X[X>15]

array([51, 55, 19])

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

Matplotlib

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

# 尝试追加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()方法读入图像。

from matplotlib.image import imread
img = imread('../input/lixiangzhilu/1.jpg')
plt.imshow(img)

<matplotlib.image.AxesImage at 0x7f08bf324cf8>

本文分享自微信公众号 - 慧响(withounder),作者:ZNing 张宁

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-23

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【玩转腾讯云】深度学习之《深度学习入门》学习笔记(一)Python入门

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

    ZNing
  • 技术角 | 记一次OJ测试赛算法实现思路

    今下午一个小时三道题的OJ测试赛告一段落。首先一首《凉凉》送给自己。整天工作CRUD以及近期代码几乎没碰,再加上OJ刷题的日子已经过去五年了,导致犯了好几个傻瓜...

    ZNing
  • 记一次OJ测试赛算法实现思路

    今下午一个小时三道题的OJ测试赛告一段落。首先一首《凉凉》送给自己。整天工作CRUD以及近期代码几乎没碰,再加上OJ刷题的日子已经过去五年了,导致犯了好几个傻瓜...

    ZNing
  • 【玩转腾讯云】深度学习之《深度学习入门》学习笔记(一)Python入门

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

    ZNing
  • numpy在cs231n中的应用

    0.作者的话1.访问数组2.broadcast机制3.np.bincount()4.np.argmax()5.联合求解6.求取精度7.作者的话

    公众号guangcity
  • Python数据分析(3)-numpy中nd数组的创建

    1、ndarray的内存结构 和其他的库一样,每个库都可能有自己独特的数据结构,例如OpenCV,numpy库的多维数组叫做ndarray( N dimensi...

    锦小年
  • [机器学习实战札记] NumPy基础

    <<机器学习实战>>一书非常注重实践,对每个算法的实现和使用示例都提供了python实现。在阅读代码的过程中,发现对NumPy有一定的了解有助于理解代码。特别是...

    云水木石
  • 数据分析 ———— numpy基础(一)

    准备了好长时间,想要写点关于数据分析的文章,但一直忙于工作,忙里抽闲更新一篇关于numpy的文章。

    andrew_a
  • 卧谈会之numpy

    0.月总结1.访问数组2.broadcast机制3.np.bincount()4.np.argmax()5.联合求解6.作者的话

    公众号guangcity
  • NumPy Essentials 带注释源码 三、NumPy 数组使用

    ApacheCN_飞龙

扫码关注云+社区

领取腾讯云代金券