如何用Numpy向量化实现随机矩阵的线性组合变换?
Numpy向量化实现线性组合生成新数组
步骤实现
导入Numpy并生成原始数组
先导入库,然后生成符合要求的2x3x4正态分布数组Z,其中Z[0]就是3x4矩阵A,Z[1]是3x4矩阵B:import numpy as np # 生成2个3x4的正态分布随机矩阵,存于Z中 Z = np.random.normal(0.0, 1.0, [2, 3, 4])定义矩阵C
把实际的a、b、c、d数值填入2x2矩阵C:# 替换a,b,c,d为你需要的实际数值,比如示例中的[[1,2],[3,4]] C = np.array([[1, 2], [3, 4]])向量化计算线性组合
直接用np.dot就能完成批量线性组合,得到的result就是2x3x4的目标数组:# result[0] = a*A + b*B,result[1] = c*A + d*B result = np.dot(C, Z)
原理说明
Numpy的dot函数处理多维数组时,会自动匹配维度做矩阵乘法:这里C是(2,2)形状,Z是(2,3,4)形状,dot(C, Z)会让C的每一行与Z的第一个维度(即A和B)做线性组合,最终输出形状为(2,3,4),正好对应你需要的A'和B'。
如果习惯用tensordot指定轴匹配,也可以这么写,效果完全一致:
result = np.tensordot(C, Z, axes=([1], [0]))
内容的提问来源于stack exchange,提问作者MBlrd
相关产品推荐
相关产品推荐

