回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>假设我有这样一个矩阵:</p>
<pre><code>import numpy as np
a = np.array([[1, 2, 3], [89, 43, 2], [12, -3, 4], [-2, 4, 7]])
array([[ 1, 2, 3],
[89, 43, 2],
[12, -3, 4],
[-2, 4, 7]])
</code></pre>
<p>一个向量是这样的:</p>
<pre><code>b = np.array([1, 2, 3])
</code></pre>
<p>如果我现在想做元素乘法,我可以简单地做</p>
<pre><code>c = a * b
</code></pre>
<p>并获得</p>
<pre><code>array([[ 1, 4, 9],
[89, 86, 6],
[12, -6, 12],
[-2, 8, 21]])
</code></pre>
<p>我的问题是:怎样才能只对矩阵中的某些行进行这种乘法?我现在是这样做的:</p>
<pre><code>E = a.copy()
# ignore these rows
ignInd = [1, 3]
for ind in xrange(a.shape[0]):
if ind not in ignInd:
E[ind, :] = a[ind, :] * b
</code></pre>
<p>矩阵<code>E</code>看起来与所需的一样(第1行和第3行与<code>a</code>中的相同):</p>
<pre><code>array([[ 1, 4, 9],
[89, 43, 2],
[12, -6, 12],
[-2, 4, 7]])
</code></pre>
<p>有人能想出比这更聪明的解决办法吗?你知道吗</p>