1、数组广播
import numpy as np"""
广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行。
如果两个数组 a 和 b 形状相同,即满足 a.shape == b.shape,那么 a*b 的结果就是 a 与 b 数组对应位相乘。这要求维数相同,且各维度的长度相同。
"""a = np.arange(12).reshape(4,3)
print(a * 2)
"""
[[ 0  2  4][ 6  8 10][12 14 16][18 20 22]]
"""a = np.array([1,2,3,4])
b = np.array([10,20,30,40])print(a * b)  # [ 10  40  90 160]"""
当运算中的 2 个数组的形状不同时,numpy 将自动触发广播机制。如:
"""
a = np.arange(0, 12).reshape(4,3)
b = np.array([1,2,3])
print(a)
print(a + b)
"""
[[ 0  1  2][ 3  4  5][ 6  7  8][ 9 10 11]][[ 1  3  5][ 4  6  8][ 7  9 11][10 12 14]]4x3 的二维数组与长为 3 的一维数组相加,等效于把数组 b 在二维上重复 4 次再运算:
"""a = np.array([[0, 0, 0],[10, 10, 10],[20, 20, 20],[30, 30, 30]])
b = np.array([1, 2, 3])
bb = np.tile(b, (4, 1))  # 重复 b 的各个维度print(a + bb)
"""
[[ 1  2  3][11 12 13][21 22 23][31 32 33]]
"""
2、np.tile 扩展数组
"""np.tile 扩展数组
np.tile(数组,(Y轴扩大倍数,X轴扩大倍数))  X轴或者Y轴 扩大一倍便为不复制
"""
bb = np.tile(b, (4, 1))  # 把 b 沿Y轴扩大4倍 沿X轴不变
print(bb)
"""
[[1 2 3][1 2 3][1 2 3][1 2 3]]
"""# 沿X轴复制
print(np.tile(b, (2)))  # [1 2 3 1 2 3]
https://www.runoob.com/numpy/numpy-broadcast.html