温故知新LS

发布于:2025-02-13 ⋅ 阅读:(69) ⋅ 点赞:(0)

这里写目录标题

chapter 1 numpy

import numpy as np
import torch
######################### chapter 1 numpy #########################
# 1 numpy与torch类型数据相互转换
a = np.random.randint(0,10,[3,3])
a_t = torch.from_numpy(a)
a.dtype      # dtype('int64')
a_t.dtype    # torch.int64
np.array(a_t).dtype  # dtype('int64')
a_t.numel()  # 元素个数
a_t[0,0].item()  # 转换成标量
help(np.abs)      # 查看帮助

# 2 将列表、元祖转换成数组
a_list = [1,2,3,4]
a_tuple = (1,2,3)
a_l = np.array(a_list)
a_t = np.array(a_tuple)
a_l.dtype,a_t.dtype   # (dtype('int64'), dtype('int64'))

# 3 利用random模块生成数组
np.random.random(size=[2,3])  ## 生成(0~1)的随机数
np.random.sample([2,2])       ## 生成[2,2]的随机浮点数
np.random.uniform(size=[2,3,2])  ## 生成[2,3,2]的均匀随机
np.random.randn(1,2)   # 生成[2,2]的标准正态分布
np.random.randint(1,10,[3,3])
np.random.normal(20,10,[2,3])

np.random.seed(10)
t = np.arange(10)
t   # array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
np.random.shuffle(t)
t    # array([1, 6, 8, 7, 0, 5, 2, 3, 4, 9])

# 4 创建特定形状的多维数组
np.zeros([2,3])
np.ones([2,3])
np.empty([2,2])   #  空数组,初始值为垃圾值
np.zeros_like(t)
np.ones_like(t)
np.empty(t)
np.eye(3)
np.full([3,3],666)
np.diag([1,2,3])
np.save(t,'path')
t = np.load('path')

# 5 利用arange、linspace函数生成数组
np.arange(start=10,stop=20,dtype = np.float32)  # array([10., 11., 12., 13., 14., 15., 16., 17., 18., 19.], dtype=float32)
np.arange(start=10,stop=20,step=2)  # array([10, 12, 14, 16, 18])
np.arange(start=9,stop=1,step=-2)  # array([9, 7, 5, 3])
np.linspace(0,100,8)  # array([  0.        ,  14.28571429,  28.57142857,  42.85714286, 57.14285714,  71.42857143,  85.71428571, 100.        ])
np.logspace(0,10,10)

# 6 获取元素
np.random.seed(10)
t = np.random.random(10)
t[4]
t[2:6]
t[::2]
t[::-3]
t = np.reshape([5,5])

t = np.random.random(24).reshape([4,6])
t[2:3,0:2]
t[[0,3],[2,4]]
t[[0,3],2:5]
t[(t>0.2)&(t<0.8)]


l = np.arange(20)
t = np.random.choice(l,[2,3])               # 不可重复抽
t = np.random.choice(l,[2,3],replace=True)  # 可重复抽
t = np.random.choice(l,[2,3],p=l/l.sum())   # 按概率抽

# 7 对应元素相乘
a = np.random.randint(0,10,[2,2])
b = np.random.randint(0,10,[2,2])
a*b          # 对应元素相乘
np.multiply(a,b)
a/b
a%b
a//b

X1=np.array([[1,2],[3,4]])  # 点积,矩阵乘法
X2=np.array([[1,2,3],[4,5,6]])
X1.dot(X2)



# 8 更改数组的形状
X2=np.array([[1,2,3],[4,5,6]])
X2.resize(3,2)   # 修改数组本身
X2.reshape([2,3])  # 不修改数组本身
X2.shape   # (3, 2)
X2.T
X2.ravel()
X2.flatten()
X2[None][...,None]

t = X2[None][...,None]  # (1, 2, 3, 1)
t.shape
t.squeeze().shape  #  (2, 3)
t = X2[None][::,::,None]       # (1, 2, 1, 3)
t.transpose([0,3,2,1]).shape   #  (1, 3, 1, 2)


# 9 合并数组
a = np.arange(9)
a.resize([3,3])
b = np.random.random([3,3])
np.concatenate([a,b],0).shape # (6, 3)
np.concatenate([a,b],1).shape # (3, 6)
np.stack([a,b]).shape   # (2, 3, 3)
np.hstack([a,b]).shape  # (3, 6)
np.vstack([a,b]).shape  # (6, 3)
np.vstack([a[None],b[None]]).shape  # (2, 3, 3)
np.hstack([a[None],b[None]]).shape  # (1, 6, 3)
np.dstack([a[None],b[None]]).shape  # (1, 3, 6)
np.append(a.ravel(),b.ravel()).shape # (18,)
np.vsplit(a,3)


# 10  批量处理
np.random.seed(123)
d = np.random.random([1000,3])
np.random.shuffle(d)
N = len(d)
bs = 110  # batch_size
for i in range(0,N,bs):
    x = d[i:i+bs]
    print(x.shape)

# 11 Numpy中的几个常用通用函数
a = np.arange(9)
a.resize([3,3])
np.sqrt(a)
np.square(a)
np.abs(a)
a.dot(a)
np.log(a)
np.exp(a)
np.cumsum(a)
np.cumsum(a,1)
a.sum(1)
a.mean(0)
np.median(a)
np.median(a,1)
np.std(a)
np.var(a)
np.coorcoef(a)

# 12 math与numpy函数的性能比较
import time
import numpy as np
import math
a = [i*0.001 for i in range(100000000)]
start = time.time()
for i,j in enumerate(a):
    a[i] = math.sin(j)
print(time.time()-start)

a = [i*0.001 for i in range(100000000)]
start = time.time()
a = np.sin(a)
print(time.time()-start)

# 13  广播机制
a = np.arange(4).reshape(4,1)
b = np.arange(6).reshape(1,6)
(a+b).shape    # (4, 6)

chapter 2 torch

######################### chapter 2 torch #########################
import numpy as np
import torch

# 1 Tensor
x = torch.tensor([10.0])
x.device
import torch
x=torch.tensor([1,2])
y=torch.tensor([3,4])
z=x.add(y)
print(z)
print(x)
x.add_(y)
print(x)
torch.Tensor([1]) #
torch.tensor([1]) # dtype根据数据类型推断
torch.Tensor(10)  # 10个元素的张量 float
torch.eye(2,4)
torch.zeros(2,3)
torch.linspace(1,10,4)
torch.rand(2,3)   # 均匀分布随
torch.randn(2,3)  # 标准正态分布

# 2 修改Tensor形状


chapter 3




网站公告

今日签到

点亮在社区的每一天
去签到