python - 矩阵的平均值乘以标量向量
问题描述
>>> a = np.arange(9)
>>> a.shape = (3,3)
>>> a
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
>>> b = np.array([1,2,3,4])
>>> b
array([1, 2, 3, 4])
>>> c = np.empty((4,3,3))
>>> for i in range(len(c)):
... c[i] = a*b[i]
...
>>> c
array([[[ 0., 1., 2.],
[ 3., 4., 5.],
[ 6., 7., 8.]],
[[ 0., 2., 4.],
[ 6., 8., 10.],
[12., 14., 16.]],
[[ 0., 3., 6.],
[ 9., 12., 15.],
[18., 21., 24.]],
[[ 0., 4., 8.],
[12., 16., 20.],
[24., 28., 32.]]])
>>> np.mean(c,axis=0)
array([[ 0. , 2.5, 5. ],
[ 7.5, 10. , 12.5],
[15. , 17.5, 20. ]])
我有一个矩阵a和一个标量向量b。我想得到矩阵的平均值乘以标量向量。现在我必须构造 ac 作为中间变量。有没有更好的方法来做到这一点?
解决方案
以上等价于乘以a
的均值。b
事实上,我们可以简单地将其定义为:
>>> a * np.mean(b)
array([[ 0. , 2.5, 5. ],
[ 7.5, 10. , 12.5],
[15. , 17.5, 20. ]])
这是有效的,因为您每次都在这里将子矩阵定义为. 如果你以后计算平均值,那么我们就知道了。但由于不依赖于,因此我们可以将其重写为,从而获得 的均值。ck
ck=a×bk
d
c
dij=∑k aij×bk/n
aij
k
dij=aij×∑k bk/n
b
推荐阅读
- javascript - 为什么 Object.keys 在 ES2015 中更改为将原语强制转换为对象?
- python - 如何将 os.DirEntry 对象与 pandas read_csv() 一起使用?
- iis - 如何解决部署 .net 核心 Web API 时出现 404 错误
- javascript - 如何根据日期将数据从 gmail 发送到不同的工作表?
- reactjs - 调用 this.props.history.push 后如何进行组件更新?
- javascript - TypeError:使用 cloudinary 时无法读取未定义的属性“路径”
- javascript - IBM Watson WebSocket 连接失败。HTTP 认证失败;没有可用的有效凭证
- html - 无法减少图像和段落之间的额外空间
- dpdk - 在一个 VM 中运行 dpdk pktgen 和数据包捕获
- javascript - JS:如何隐藏引导模式以使输入数据不会持续存在?