簡體   English   中英

如果存在一定數量的元素,如何從 numpy 數組中刪除行

[英]How to remove rows from numpy array if certain number of an element is present

我有一個 2d numpy 數組,其中包含一些數字,例如:

data = 
[[1.1, 1.2, 1.3, 1.4],
[2.1, 2.2, 2.3, -1.0],
[-1.0, 3.2, 3.3, -1.0],
[-1.0, -1.0. -1.0, -1.0]]

我想刪除包含值-1.0 2 次或更多次的每一行,所以我只剩下

data = 
[[1.1, 1.2, 1.3, 1.4],
[2.1, 2.2, 2.3, -1.0]]

我發現這個問題看起來非常接近我想要做的事情,但我不太清楚如何重寫它以適應我的用例。

您可以使用以下代碼輕松完成此操作:

new_data = data[(data == -1).sum(axis=1) < 2]

結果:

>>> new_data
array([[ 1.1,  1.2,  1.3,  1.4],
       [ 2.1,  2.2,  2.3, -1. ]])
def remove_rows(data, threshold):
    mask = np.array([np.sum(row == -1) < threshold for row in data])
    return data[mask]

此 function 將返回一個新數組,其中沒有 -1 大於或等於閾值的行

您需要傳入一個 Numpy 數組才能使其工作。

暫無
暫無

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

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