源码 https://github.com/webabcd/PytorchDemo
作者 webabcd
日新月异 PyTorch - numpy 基础: numpy 数组的运算,连接,分割
示例如下:
numpy\demo3.py
import numpy as np# 数组之间的运算
def sample1():a = np.array([1, 2, 3, 4])b = np.array([2, 4, 6, 8])# 加法print(a + b) # [ 3 6 9 12]# 减法print(a - b) # [-1 -2 -3 -4]# 乘法print(a * b) # [ 2 8 18 32]# 除法print(a / b) # [0.5 0.5 0.5 0.5]# 幂运算print(a ** b) # [1 16 729 65536]c = np.array([1, 2, 3])d = np.array([[2], [4], [6]])print(c)'''
[1 2 3]'''print(d)'''
[[2][4][6]]'''# 不同形状的数组在进行运算时,会通过广播机制(broadcasting)扩展为合适形状的数组# 比如 c 和 d 相加,就相当于如下两个数组相加'''
[[1 2 3][1 2 3][1 2 3]]
+
[[2 2 2][4 4 4][6 6 6]]'''print(c + d)'''
[[3 4 5][5 6 7][7 8 9]]'''# 数组之间的连接
def sample2():a = np.array([[1,2],[3,4]])b = np.array([[5,6],[7,8]])print(a)'''
[[1 2][3 4]]'''print(b)'''
[[5 6][7 8]]'''# 沿着轴 0 连接两个数组# 轴(axis)就是指的维度c = np.concatenate((a,b), axis=0)print(c)'''
[[1 2][3 4][5 6][7 8]]'''# 沿着轴 1 连接两个数组d = np.concatenate((a,b), axis=1)print(d)'''
[[1 2 5 6][3 4 7 8]]'''# 沿着轴 0 组合两个数组,会封装成为一个三维数组e = np.stack((a,b), axis=0)print(e)'''
[[[1 2][3 4]][[5 6][7 8]]]'''# 沿着轴 1 组合两个数组,会封装成为一个三维数组f = np.stack((a,b), axis=1)print(f)'''
[[[1 2][5 6]][[3 4][7 8]]]'''# 垂直方向连接两个数组g = np.vstack((a,b))print(g)'''
[[1 2][3 4][5 6][7 8]]'''# 水平方向连接两个数组h = np.hstack((a,b))print(h)'''
[[1 2 5 6][3 4 7 8]]'''# 数组之间的分割
def sample3():a = np.arange(9)print (a) # [0 1 2 3 4 5 6 7 8]# 将数组分割为 3 个大小相等的数组b = np.split(a,3)print(b) # [array([0, 1, 2]), array([3, 4, 5]), array([6, 7, 8])]# 从位置 4, 6, 7 分割数组c = np.split(a,[4,6,7])print(c) # [array([0, 1, 2, 3]), array([4, 5]), array([6]), array([7, 8])]d = np.array([[1,2,3,4],[5,6,7,8]])print(d)'''
[[1 2 3 4][5 6 7 8]]'''# 垂直分割为 2 个数组e = np.vsplit(d, 2)print(e)'''
[array([[1, 2, 3, 4]]), array([[5, 6, 7, 8]])]'''# 水平分割为 2 个数组f = np.hsplit(d, 2)print(f)'''
[array([[1, 2],[5, 6]]), array([[3, 4],[7, 8]])]'''if __name__ == '__main__':# 数组之间的运算sample1()# 数组之间的连接sample2()# 数组之间的分割sample3()
源码 https://github.com/webabcd/PytorchDemo
作者 webabcd