Python:通过numpy数组上的元素操作构建Matrix

时间:2017-06-16 17:48:30

标签: python arrays numpy

给定两个numpy数组(arr1和arr2)我想构建一个矩阵,用于存储arr1中每个元素与arr2中每个元素的差异。即:

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很陌生,所以我不确定这是否是构建此矩阵的最具有pythonic和效率的方法。有什么提示吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

你可以将其中一个数组重塑为2d数组,然后使用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]])