2013-10-04 31 views
2

比方說,我有一個矩陣使用廣播根據向量中的元素乘以矩陣行?

x=array([[ 0., 0., 0.], 
     [ 0., 0., 1.], 
     [ 0., 1., 0.], 
     [ 0., 1., 1.], 
     [ 1., 0., 0.], 
     [ 1., 0., 1.], 
     [ 1., 1., 0.], 
     [ 1., 1., 1.]]) 

我想

array([[ 0., 0., 0.], 
     [ 0., 0., 2.], 
     [ 0., 3., 0.], 
     [ 0., 4., 4.], 
     [ 5., 0., 0.], 
     [ 6., 0., 6.], 
     [ 7., 7., 0.], 
     [ 8., 8., 8.]]) 

如何寫xrange(1,9)之間的單行體現在哪裏?列的相同操作的代碼是什麼?

回答

4
x * np.arange(1, 9).reshape(-1, 1) 

x * arange(1, 9)[:, np.newaxis] 

兩種形式使一個列向量出arange(1, 9),其沿着x y軸很好地廣播。

「列的相同的​​操作」是上述的,即只是轉置跳過reshape操作:

x * arange(1, 4)