我正在寻找一种从给定向量 b_i
和另一个向量创建新矩阵 A_{ij}
的快速方法
矩阵C_{ij}
。新矩阵的组成部分应具有以下形式
A_{ij} = b_i * C_{ij}.
到目前为止我使用的是dot(diag(b), C)
,但是点积自然有很多乘法
为零,这是相当低效的。有更好的办法吗?
最佳答案
使用*
,具有适当广播的元素级乘积:
>>> b = array([1,2,3])
>>> C = arange(9).reshape(3,3)
>>> dot(diag(b), C)
array([[ 0, 1, 2],
[ 6, 8, 10],
[18, 21, 24]])
>>> atleast_2d(b).T * C
array([[ 0, 1, 2],
[ 6, 8, 10],
[18, 21, 24]])
atleast_2d(b).T
(或 b.reshape(-1,1)
)将向量 b
reshape 为列向量.
关于python - numpy:创建具有条目 c_i * C_{ij} 的矩阵的快速方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13683804/