【发布时间】:2022-01-19 13:34:57
【问题描述】:
我想用 numpy 有效地得到两个数组的最小值之和。例如;
X=np.array([[1,2,3],[1,2,0]])
Y=np.array([[0,2,0],[1,3,1]])
我的结果应该是;
result = array([[2, 4],[2, 3]])
第一个单元格的计算;
result[0,0] = min(X[0,0],Y[0,0])+ min(X[0,1],Y[0,1])+min(X[0,2],Y[0,2])
一般来说,结果应该是:
res[i,j] = sum(np.minimum(X[i, :], Y[j, :]))
但正在寻找最快的方式。
【问题讨论】:
-
我的解释:将所有向量相互结合:
result[i,j] = sum(min(X[i, :], Y[j, :])). -
最佳方式取决于您的内存限制、向量的大小、列表的长度、您需要/拥有的实际数据结构(例如,它是否真的是 2d np 数组) ,最后我们是否需要一个 np 数组)。对我们有什么提示吗?
-
数组形状类似于 (1000, 40000)。暂时没有内存限制,我正在寻找最快的方法。