给定两个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和效率的方法。有什么提示吗?
提前致谢!
答案 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]])