比方說,我有這樣一個矩陣:的elementwise乘法忽略矩陣的某些行
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]])
和看起來像這樣一個向量:
b = np.array([1, 2, 3])
如果我現在想要做的elementwise乘我可以簡單地做
c = a * b
,並獲得
array([[ 1, 4, 9],
[89, 86, 6],
[12, -6, 12],
[-2, 8, 21]])
我的問題是:如何才能對我矩陣中的某些行進行這種乘法運算?我現在做的是這樣的:
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
矩陣E
看起來所需的(行1和3是一樣a
):
array([[ 1, 4, 9],
[89, 43, 2],
[12, -6, 12],
[-2, 4, 7]])
能有人想出了一個聰明的解決方案比這個?
也許擴展向量爲一個矩陣,有些行都是1? –
@tobias_k:這可能工作,但列應該是1而不是行。我嘗試了,謝謝! – Cleb