簡體   English   中英

Select numpy 數組的行子集,基於另一個數組中的行選擇

[英]Select subset of rows of numpy array based on a selection of rows in another array

我有 2 個 numpy arrays 並且我想 select 根據另一個的條件子集在其中一個中的行子集

arr1 = np.array([[1, 2, 1, 5], [3, 4, 1, 6], [2, 2, 2, 7]])
arr2 = np.array([[2, 2, 1], [2, 3, 0], [2, 1, 1]])

我想 select 僅arr1中的那些行,其中arr2中的第三個元素是 1。在這種情況下, arr2看起來像這樣: np.array([[2, 2, 1], [2, 1, 1]]) arr1將變為: np.array([[1, 2, 1, 5], [2, 2, 2, 7]]) 可以假設它們都具有相同的行數,但可以具有不同的列數。 我怎樣才能做到這一點?

In [500]: arr2
Out[500]: 
array([[2, 2, 1],
       [2, 3, 0],
       [2, 1, 1]])

每行的第三個元素:

In [502]: arr2[:,2]
Out[502]: array([1, 0, 1])
In [503]: arr2[:,2]==1
Out[503]: array([ True, False,  True])

將此 boolean 掩碼應用於 arr1 的 select 行:

In [504]: arr1[arr2[:,2]==1]
Out[504]: 
array([[1, 2, 1, 5],
       [2, 2, 2, 7]])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM