2017-06-16 61 views
0

給定兩個numpy數組(arr1和arr2)我想構建一個矩陣,將arr1中的每個元素與arr2中的每個元素的差異存儲在一起。即:Python:通過numpy數組上的元素明智的操作構建矩陣

my_matrix = [arr1-i for i in arr2] 

然而,隨着陣列變得更大,這開始變慢。我試圖使用numpy的良好的業績,像這樣:

arr1_mtx = np.array([arr1]*len(arr2)) 
arr2_mtx = np.array([arr1]*len(arr2)).T 
my_matrix = arr1_mtx-arr2_mtx 

我很新的Python的,所以我不知道這是建立這個矩陣的最Python的和有效的方式。有小費嗎?

在此先感謝!

+0

「鑑於兩個列表(numpy的陣列)」 - 與NumPy陣列和名單完全不同的東西。 – user2357112

+0

好點。讓我編輯該 –

回答

0

可以重塑陣列中的一個二維數組,然後使用numpy的broadcasting

arr1[:,None] - arr2 

arr1 = np.array([1,2]) 
arr2 = np.array([3,4,5]) 
​ 
arr1[:,None] - arr2 
#array([[-2, -3, -4], 
#  [-1, -2, -3]]) 
+1

非常感謝你:) –