Python深度学习笔记第一周

有关类的介绍

用户自己定义类,将会创建新的数据类型,同时可以定义相关类的函数和属性。

  • Python中的class可以定义类:
class 类名:
	def __int__(self,参数,...): # 构造函数
		...
	def 方法名1(self, 参数,): # 方法1
 		...
 	def 方法名2(self, 参数,): # 方法2
 		...

其中,__int__就是构造函数,可以在生成类的实例时进行数据的初始化。

  • 举例如下:
class Man:
 def __init__(self, name):
 self.name = name
 print("Initialized!")
 def hello(self):
 print("Hello " + self.name + "!")
 def goodbye(self):
 print("Good-bye " + self.name + "!")
m = Man("David")
m.hello()
m.goodbye()

理解:
通过构造函数创建一个实例对象m,向其中传入参数name,然后将该参数转化为实例的变量(self.name=name实际上类似于在Java中学习的this.name=name,这个带有“身份”的变量就是可以在各个“成员方法”间进行拿来进行应用的变量)

NumPy

导入NumPy

与平时的方法一样:

import numpy as np

以后就可以直接用np代表numpy来实现相关库的方法调用啦,注意如果没有写as np 是不可以写成后面的一系列形式的。

生成NumPy数组

np.array()
生成的类型为: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 - y
array([ -1., -2., -3.])
>>> x * y # element-wise product
array([ 2., 8., 18.])
>>> x / y
array([ 0.5, 0.5, 0.5])

解释:实际上就类似于对于矩阵点对点的运算,并且要注意是相同“维度”的

NumPy的N维数组

[ ]表示一个维度的数组,如上述例题,如果中间用 , 隔开则可以创造多维数组,基本上将二维数组称为“矩阵”,将三维数组及三维以上的数组称为“张量”或“多维数组”。举例如下:

>>> A = np.array([[1, 2], [3, 4]])
>>> print(A)
[[1 2]
 [3 4]]
>>> A.shape	# A的形状的查看方式
(2, 2)
>>> A.dtype	# 矩阵元素的数据类型的查看方式
dtype('int64')

广播

>>> A * 10
array([[ 10, 20],
 [ 30, 40]])

上述矩阵与数值(标量)的运算

>>> A = np.array([[1, 2], [3, 4]])
>>> B = np.array([10, 20])
>>> A * B
array([[ 10, 40],
 [ 30, 80]])

数组与与之不同形状的数组之间的运算

访问元素

  • 形式:
数组名[][]

但要注意这期间是从0开始进行索引的

也可以进行某数组的遍历(结果就是返回各个数组的具体情况)
>>> 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])
  • 和我们所学过的MATLAB相类似,我们也可以通过逻辑符号进行布尔型的输出,进行对于数组有需求的筛选:
>>> X > 15
array([ True, True, False, True, False, False], dtype=bool)
>>> X[X>15]	# 选出True类型的数组所对应元素,[数组]中的功能和我们上一个获取索引的例子是相似的
array([51, 55, 19])

Matplotlib

使用Matplotlib可以轻松地绘制图形和实现数据的可视化,这个与深度学习十分相关。这个包需要自己进行导入!

绘制简单图形

import numpy as np
import matplotlib.pyplot as plt
# 生成数据
x = np.arange(0, 6, 0.1) # 以0.1为单位,生成0到6的数据(不包含6!!!实际范围为[0,5.9])
y = np.sin(x)	# 调用Numpy中的sin函数
# 绘制图形
plt.plot(x, y)
plt.show()

sin函数的图像

pyplot中一些函数的功能

import numpy as np
import 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()

可以看到与MATLAB中的函数语法有多么相似呀,就不过多介绍了
在这里插入图片描述

显示图像

import matplotlib.pyplot as plt
from matplotlib.image import imread

img = imread('lena.png') # 读入图像(设定合适的路径!)
plt.imshow(img)
plt.show()

注意:要把图片放在同一路径下!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值