2014-09-26 11 views

回答

2

這似乎工作:

In [1]: %paste 
import numpy as np 
inp_vec = np.array([1, 2, 3]) 

## -- End pasted text -- 

In [2]: inp_vec.reshape(-1, 1) - inp_vec 
Out[2]: 
array([[ 0, -1, -2], 
     [ 1, 0, -1], 
     [ 2, 1, 0]]) 

說明:

您需要先在陣列重塑到nx1。當你減去一維數組,它們都廣播nxn

array([[ 1, 1, 1], 
     [ 2, 2, 2], 
     [ 3, 3, 3]]) 

array([[ 1, 2, 3], 
     [ 1, 2, 3], 
     [ 1, 2, 3]]) 

然後,減法完成逐元素,其產生期望的結果。

+0

您好,感謝的答案和解釋,但是你能點我一些參考解釋從nx1擴展到nxn。這有點神祕。另外我怎麼知道減法是按列進行的。謝謝 – user3176500 2014-09-26 08:31:14

+0

@ user3176500我想這是不正確的說減法是按列或按行,請參閱編輯。有關規則的簡短說明,請查看[本教程](http://wiki.scipy.org/Tentative_NumPy_Tutorial#head-c533fb9a3f1aa90d96e4d8329c1c2f975474c8bf)。 – 2014-09-26 08:39:17

+0

對不起,錯過了「它們都播放到nxn」。當然,減法是按照元素進行的。再次感謝 – user3176500 2014-09-26 08:43:55

2
import numpy as np 
inp_vec = np.array([1, 2, 3]) 

a, b = np.meshgrid(inp_vec, inp_vec) 
print(b - a) 

輸出:

Array([[ 0 -1 -2], 
     [ 1 0 -1], 
     [ 2 1 0]]) 
2

這是我找到一個很好的方式,以及:

np.subtract.outer([1,2,3], [1,2,3]) 
相關問題