import numpy as np
x = np.random.randint(low=1, high=10, size=5)
y = np.random.randint(low=1, high=10, size=5)
print('x:', x)
print('y:', y)
数组相加
x = np.random.randint(low=1, high=10, size=5)
y = np.random.randint(low=1, high=10, size=5)
print('x:', x)
print('y:', y)
广播一维数组
z = np.random.randint(low=1, high=10, size=15).reshape(3, 5)
print('x:', x)
print('z:\n', z)
print('x+z:\n', x + z)
行向量+列向量=被广播,成为一个数组:
print('y:', y)
yy = y[:, np.newaxis]
print('yy:\n', yy)
print('yy+y:\n', yy + y)
广播规则
- 小维度的数组被补1
- 维度为1的方向被扩展
- 无法广播:2*3+1*5
无法广播实例:
mm = np.ones(6) //6*6
nn = np.eye(5, 5) //5*5
print('mm:\n', mm)
print('nn:\n', nn)
print(mm + nn)
广播的应用:归一化
归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为标量。
print('z:\n', z)
z_mean = np.mean(z, axis=0) # 求均值
print('对z的每一列求均值:\n', z_mean)
z_centered = z - z_mean # 归一化函数
print('z的归一化:\n', z_centered)
print('判断归一化效果:第一列均值接近0:\n', np.mean(z_centered, axis=0))
使用掩码索引
print(z[z < 10])