繁体   English   中英

Python:在numpy数组上按元素明智的操作构建矩阵

[英]Python: Building Matrix by element wise operations on numpy arrays

给定两个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和最有效的方法。 有小费吗?

提前致谢!

您可以将其中一个数组整形为2d数组,然后使用numpy 广播

arr1[:,None] - arr2

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM