1
假設有兩個數組,vals
包含值,masks
包含布爾值,指示是否使用vals
或nan
s中的值。目標是構建一個長度與masks
相同長度的數組ret
,其中包含vals
的值,位於masks
的True
條目的相應位置。「Unsparsing」numpy Arrays with Given Masks
例如,假設
vals = np.array([1, 2])
masks = [True, False, False, True]
然後ret
,返回值,應該是
array([1, None, None, 2], dtype=object)
這顯然是很容易做到的使用循環:
import numpy as np
def unsparse(vals, masks):
vals_i = 0
ret = []
for m in masks:
if m:
ret.append(vals[vals_i])
vals_i += 1
else:
ret.append(None)
return np.array(ret)
>> unsparse(np.array([1, 2]), [True, False, False, True])
array([1, None, None, 2], dtype=object)
是有沒有辦法做到沒有循環,更簡潔?
你真的想要的那個陣列中沒有'?你打算做什麼計算? – hpaulj