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