2017-06-03 79 views
1

也許我只是懶惰在這裏,但讓我們說,我有兩個數組,長度爲n和m,並且我想要兩個數組中的所有元素的最小值兩個陣列相互比較。例如:Numpy minimum like np.outer()

a = [1,5,3] 
b = [2,4] 
cross_min(a,b) 
= [[1,1],[2,4],[2,3]] 

這類似於np.outer(行爲),除了不是兩個陣列相乘,它計算最小的兩個元件。

在numpy中是否有類似的操作?

我知道我可以沿着b運行np.minimum()並將結果堆疊在一起。我想知道這是否是一個衆所周知的操作,我只是不知道名稱。

回答

4

可能會將數組轉換成一個二維數組中的一個,然後利用broadcasting規則和np.minimum的:

import numpy as np 
a = np.array([1,5,3]) 
b = np.array([2,4]) 

np.minimum(a[:,None], b) 
#array([[1, 1], 
#  [2, 4], 
#  [2, 3]]) 
+0

啊,那是聰明的。謝謝!我得等到我能接受你的答案... –

+0

不客氣!希望能幫助到你。 – Psidom

3

您可以使用np.minimum.outer(a, b)

+0

簡直不可思議。我無法相信Numpy一直支持這一點,用我用來形容它的同樣精確的術語!謝謝。 –

+1

但請注意,它實際上只是@ Psidom答案的簡寫,並且不應該更快。 – Eric