可以使用np.searchsorted
得到其中b
的第一列元素對應於a
的第一列的元件,並使用該獲得除法相應的第二列元素和最後得到c
的位置。因此,假設a
和b
是NumPy的陣列,所述向量化的實施方法是 -
a0 = a[:,0]
c = np.true_divide(a[:,1],b[np.searchsorted(a0,b[:,0],sorter=a0.argsort()),1])
上面列出適用於一個通用的情況下,當a
第一列的元件不一定排序的方法。但是,如果他們進行排序,就像所列出的樣品的情況下,你可以簡單地忽略sorter
輸入參數,並具有簡化的解決方案,像這樣 -
c = np.true_divide(a[:,1],b[np.searchsorted(a0,b[:,0]),1])
採樣運行 -
In [35]: a
Out[35]:
array([[1, 5],
[2, 6],
[3, 3],
[4, 2]])
In [36]: b
Out[36]:
array([[3, 1],
[4, 2],
[1, 8],
[2, 4]])
In [37]: a0 = a[:,0]
In [38]: np.true_divide(a[:,1],b[np.searchsorted(a0,b[:,0],sorter=a0.argsort()),1])
Out[38]: array([ 0.625, 1.5 , 3. , 1. ])
「a」的第一列是否總是排序? 'a'中的每個第一列數字是否出現在'b'中?它們的尺寸是否相同? – kennytm
@kennytm對所有人都是。 – Scientized
每個列表中的第一個位置是否允許重複? –