numpy配列の行に対して操作(中央値の減算など)を実行したいと思います。
これを行う1つの方法は、内包リストを使用することです。
import numpy as np
from statistics import median
x = np.array([[1, 2, 3, 4], [5, 6, 7 ,8], [9, 10, 11, 12]])
xm = np.vstack(([x[i,:] - median(x[i,:]) for i in range(x.shape[0])]))
各行が処理され、numpy配列として垂直にスタックされます。
それを行うためのより効率的でエレガントな方法はありますか?
x - np.median(x, axis=1)[:, np.newaxis]
与えられnp.median
たkeepdims
パラメータがあり、手動スライスを回避して放送に適したものにすることもできます
x - np.median(x, axis=1, keepdims=True)
median
fromのように、任意の関数を行ごとに適用するstatistics
場合は、を使用できますnp.apply_along_axis
。基本的にはfor
ループであるため、ベクトル化の高速化は実際には得られないことに注意してください。
x - np.apply_along_axis(median, axis=1, x)[:,np.newaxis]
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加