python - numpy:创建具有条目 c_i * C_{ij} 的矩阵的快速方法

标签 python matrix numpy scipy

我正在寻找一种从给定向量 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/

相关文章:

c++ - 在不循环的情况下写入 .oct 文件中的矩阵?

c# - 有windows phone 8.0平台矩阵式吗?

python - Django 中的表单对象没有属性 'email'

python - 克隆的字典被新字典的更改覆盖

c++ - CUDA: block 的更多维度还是只有一个?

python - 连续数组和非连续数组有什么区别?

将多个文件中的数据导入数组的Pythonic方法

python - 如何从 numpy 中不同长度的唯一数组组成频率列表

python - 在 docker 上使用 selenium 网格运行 browsermob

python - 控制 python 输出到控制台