动手学深度学习—数据操作

一、 索引和切片

X = np.arange(12).reshape(3, 4)
X[-1], X[1:3] 
X[1, 2] = 9
X[0:2, :] = 12

二、 节省内存

如果我们Y = X + Y,我们将取消引Y指向的张量,而是指向新分配的内存处的张量。

before = id(Y)
Y = Y + X
id(Y) == before   # False

为了:减少不必要的内存分配,希望原地执这些更新,可以进行如下操作:

如果在后续计算中没有重复使X,我们也可以使X[:] = X + Y或X += Y来减少操作的内存开销。

Z = np.zeros_like(Y)
print('id(Z):', id(Z))
Z[:] = X + Y
print('id(Z):', id(Z))

before = id(X)
X += Y
id(X) == before   #True

三、 转换为其他Python对象

要将大小为1的张量转换为Python标量,我们可以调用item函数或Python的内置函数。

a = np.array([3.5])
a, a.item(), float(a), int(a)  # (array([3.5]), 3.5, 3.5, 3)
type(a)   # 查看a数据类型

 

posted @ 2023-02-01 21:10  才品  阅读(51)  评论(0)    收藏  举报