[英]Comparing two numpy arrays with different lengths line-wise
我正在嘗試將所有元素與兩個不同長度 arrays 的所有元素進行比較。假設我有一個數組:
A = np.array([[15,25,22],[200,200,20]])
第二個數組是我要與之比較的數組:
B = np.array([[150., 350.],
[250., 450.],
[150., 350.],
[400., 600.],
[400., 600.],
[650., 850.],
[550., 750.],
[650., 850.]])
我需要的是將 A ( A[:, 0]
) 中所有 arrays 的索引 0 上的所有元素與數組 B ( B[:, 0]
) 中所有 arrays 中索引 0 上的所有元素進行比較。
如果 A 只是一個簡單的數組,例如A=[25,40,25]
,那么它可以簡單地完成:
smaller = np.array(A[0] > B[:, 0]).astype('int')
我以為我可以將它轉換為二維比較,這樣
smaller = np.array(A[:, 0] > B[:, 0]).astype('int')
這不起作用,錯誤很明顯, ValueError: operands could not be broadcast together with shapes (2,) (8,)
。 我知道這樣我無法比較它,但我無法找到如何這樣做的方法。
我想要的 output 看起來像這樣:
[[False, False, False, False, False, False, False, False],
[True, False, True, False, False, False, False, False]]
這就是我能擁有的
np.array([A[i,0] > B[:, 0] for i in range(A.shape[0])])
感謝@MichaelSzczesny,我得到了我正在尋找的解決方案。 只需將[:, None]
添加到比較中即可:
smaller = np.array(A[:, 0][:, None] > B[:, 0]).astype('int')
正如Python 中在數組索引中使用 None 中所解釋的,它向數組添加了一個軸。 因此從
[ 15 200]
我們得到
[[ 15]
[200]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.