簡體   English   中英

Python 過濾器 numpy 數組基於掩碼數組

[英]Python filter numpy array based on mask array

假設我有一個長度為 N 的數據 numpy 數組和一個長度為 N 的位掩碼數組。

data = [1,2,3,4,5,6,7,8,9,0]
mask = [0,1,0,1,0,1,0,1,0,1]

是否有一種無循環的 numpy 方法來創建一個基於數據的新數組,這樣當且僅當 mask[i]?= 0 時它才會獲取所有數據條目:像這樣:

func(data, mask) = [2,4,6,8,0]

或等效地在循環符號中:

ans = []
for idx in range(mask):
    if mask[idx]:
        ans.append(data[idx])
ans = numpy.array(ans)

謝謝!

您可以使用一組 boolean 值過濾 numpy arrays 。 您從一個整數數組開始,您不能直接使用它,但您當然可以將 1 和 0 解釋為布爾值,然后直接將其用作掩碼:

import numpy as np

data = np.array([1,2,3,4,5,6,7,8,9,0])
mask = np.array([0,1,0,1,0,1,0,1,0,1])

data[mask.astype(bool)]
# array([2, 4, 6, 8, 0])

暫無
暫無

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

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