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