[英]How do I randomly get a certain number of elements of a numpy array with at least one element from each class?
[英]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.