2017-06-16 67 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

非常感谢你:) –