2
私は同じ長さの2つの配列を持っています。最初の配列はブール値の配列で、2番目の配列は対応する値を含んでいます。bool pythonによる配列の部分の中央値の取得
flag = [0,0,0,1,1,0,0,0,1,1,1,1,0,1,1]
values = [1,5,6,8,5,6,2,0,1,9,3,8,3,6,2]
ブール値行列の各部分に対応する中央値を含む中央値の配列を返したいとします。
flag = [0,0,0,1, 1, 0,0,0, 1, 1, 1, 1, 0,1,1]
result = [0,0,0,6.5,6.5,0,0,0,5.5,5.5,5.5,5.5,0,4,4]
私unestheticアプローチが行うことです。
result = np.zeros(values.shape[0])
vect = []
idx = []
for n in np.arange(result.size):
if flag[n] > 0:
vect.append(values[n])
idx.append(n)
elif flag[n] == 0:
result[idx] = np.median(vect)
vect = []
idx = []
result[idx] = np.median(vect)
それはうまく動作しますが、私は非常に大きな配列を扱うので、それは非常にニシキヘビと非常に遅いではありません。
この問題は明らかです。 – Divakar
ありがとう! 10 000要素配列の場合、約100倍高速です。 –