深度学习笔记---NumPy数组

NumPy的数组类(numpy.array)中提供了很多便捷的方法,在实现深度学习时,我们将使用这些方法。

# 1.导入NumPy

import numpy as np

这条语句就是“将numpy作为np导入”的意思。通过写成这样的形式,之后NumPy相关的方法均可通过np来调用。

# 2.生成NumPy数组

A = np.array([1,2,3])

np.array()接收Python列表作为参数,生成NumPy数组。

# 3.NumPy的算术运算

x = np.array([1,2,3])
y = np.array([2,4,6])

print("对应元素加法x+y=",x+y)
print("对应元素减法x-y=",x-y)
print("对应元素乘法x*y=",x*y)
print("对应元素除法x/y=",x/y)

对应测试结果:

# 4.NumPy的N维数组

A = np.array([[1,2],[3,4]]) # 创建二维数组A
print(A) # 打印二维数组A

print(A.shape)  # 查看矩阵A的形状
print(A.dtype)  # 查看矩阵A中元素的数据类型

对应测试结果:

NumPy数组可以生成N维数组,这里只展示了二维数组(矩阵)的生成。

# 5.广播

A = np.array([[1,2],[3,4]])
B = np.array([10,20])

print(A*10)   # 矩阵与标量相乘
print(A*B)    # 不同形状的数组相乘

对应测试结果:

NumPy中,形状不同的数组之间也可以进行运算。上述例子A*10中,标量10被扩展成2*2的形状,然后再与矩阵A进行乘法运算。例子A*B中,一维数组B通过复制扩展成了2*2的形状,然后再与矩阵A进行乘法运算。这就是NumPy的广播功能。

# 6.访问元素

X = np.array([[51,55],[14,19],[0,4]])

# 通过下标直接访问
print(X[0])
print(X[0][1])

# 运用for语句访问
for row in X:
	print(row)
	
# 使用数组访问
X = X.flatten() # 将X转化为一维数组
print(X[np.array([0,2,4])]) # 访问索引为0,2,4的元素
print(X[X>15])  # 访问X中值大于15的元素

对应测试结果:

# 7.NumPy中矩阵乘积的运算

对于两个NumPy矩阵X和Y,语句np.dot(X,Y)表示矩阵乘法X*Y,语句np.dot(Y,X)表示矩阵乘法Y*X。由于矩阵的乘法有对应维度必须相等的限制,我们运用np.dot()方法时要小心谨慎。

特别要注意的一点是,对于(8,9)这样的一维数组用于矩阵乘法时,它可以根据维度情况看作1*2的矩阵或2*1的矩阵。

下面是一个具体例子:

import numpy as np

A = np.array([[1,2],[3,4],[5,6]])
B = np.array([1,2])
C = np.array([[6,6,6],[2,2,2]])

print(np.dot(A,B)) # 计算矩阵A,B的乘积,这里的一维数组B看作是2*1的矩阵
print(np.dot(B,C)) # 计算矩阵B,C的乘积,这里的一维数组B看作是1*2的矩阵

对应测试结果:

 

# 本博客参考了《深度学习入门——基于Python的理论与实现》(斋藤康毅著,陆宇杰译),特在此声明。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值