日新月异 PyTorch - numpy 基础: numpy 数组的运算,连接,分割

源码 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

posted @ 2024-09-24 15:03  webabcd  阅读(14)  评论(0编辑  收藏  举报