MACHINE LEARNING · 01
掌握数组创建、属性、形状、运算、统计与广播机制。
- NumPy
- 数组
NumPy 数组与矩阵基础
掌握数组创建、属性、形状、运算、统计与广播机制。
1.numpy
1.1创建数组
# 创建
# 创建一个一维数组
a = np.array([1,2,3,4,5])
print(f"一维数组:\n{a}")
# 创建一个二维数组
b = np.array([[1,2,3],[4,5,6]])
print(f"二维数组:\n{b}")
# 创建全0数组
c = np.zeros((2,3))
print(f"全零数组:\n{c}")
# 创建全1数组
d = np.ones((2,3))
print(f"全1数组:\n{d}")
# 范围和等分
# 等分数组(0-10,5个数)
e = np.linspace(0,10,5)
print(f"等分数组:\n{e}")
# 范围(0-10,步长为2)
f = np.arange(0,10,2)
print(f"范围数组:\n{f}")
# 随机和正态
# 随机数(0-1)
g = np.random.rand(2,3)
print(f"随机数组:\n{g}")
#正态分布(-3,+3)
h= np.random.randn(2,3)
print(f"正态数组:\n{h}")
1.2数组的属性
# 数组的属性
# 数组的维度 行
print(f"数组的维度:{a.ndim}")
# 数组的大小
print(f"数组的大小:{a.size}")
# 数组的形状 列,行
print(f"数组的形状:{a.shape}")
# 数组的类型
print(f"数组的类型:{a.dtype}")
1.3数组的形状
# 形状处理
# 重置形状
a = np.array([1,2,3,4,5,6])
npr1= a.reshape(3,2)
print(f"重置形状:\n{npr1}")
# 转置#转置行列交换
npr2 = np.array(a)
print(f"转置:\n{npr2.T}")
# 展平
npr3 = np.array([[1,2,3],[4,5,6]])
print(f"展平:\n{npr3.flatten()}")
# 调整形状+大小(不够就重复,多余就切除)
npr4= np.array([1,2,3,4,5,6])
print(f"调整形状+大小:\n{npr4.resize(3,2)}")
print(f"调整大小:\n{npr4.resize(3,3)}")
1.4数组的基本运算
# 数组计算
# 加减乘除幂
a = np.array([1,2,3,4,5])
b = np.array([5,4,3,2,1])
#加
print(f"加:\n{a+b}")
#减
print(f"减:\n{a-b}")
#乘
print(f"乘:\n{a*b}")
#除
print(f"除:\n{a/b}")
#幂
print(f"幂:\n{a**b}")
#比较运算
print(f"比较大小:\n{a>b}")
# 矩阵乘法
# .dot (点积运算)-不是矩阵专有的运算
print(f"标量计算:{np.dot(1,2)}")
print(f"向量乘法:\n{np.dot([1,2],[3,4])}")
print(f"矩阵乘法:\n{np.dot([[1,2],[3,4]],[[5,6],[7,8]])}")
# '@'是矩阵乘法(A列==B行)(A的每一行×B的每一列)
# matmul
np1 = np.array([[1,2],[3,4]])
np2 = np.array([[5,6],[7,8]])
print(f"矩阵乘法:\n{np1@np2}")
print(f"矩阵乘法:\n{np.matmul(np1,np2)}")
1.5数组的计算
# 数组计算
# 数组的和
np4 = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(np.sum(np4))
# 数组列的和
print(np.sum(np4,axis=0))#0表示列
# 数组行的和
print(np.sum(np4,axis=1))#1表示行
# 平均值
print(np.mean(np4))
# 方差
print(np.var(np4))
# 标准差
print(np.std(np4))
# 最大值
print(np.max(np4))
# 最小值
print(np.min(np4))
# 最大值索引
print(np.argmax(np4))
# 最小值索引
print(np.argmin(np4))
1.6广播机制
# 广播机制
# 1.升维度(少的向多的提升,给前面加1)
# 2.拉伸(少的向多的拉伸)
a1=np.array([[1,2,3],
[4,5,6],
[7,8,9]])
b1=np.array([[1],[2],[3]])
print(f"广播:\n{a1+b1}")
# 广播可能出错
# 先升到同一维,然后从尾看,相同可以,见1可以