x_d = np.linspace(-4, 8, 30)
print('x_d shape: ',x_d.shape)
print('x shape: ',x.shape)
density = sum((abs(xi - x_d) < 0.5) for xi in x)---------> difficulty in understanding statement
output:
x_d shape: (30,)
x shape: (20,)
上記の説明を理解するのに苦労しています
xの値ごとに、そこからx_dを差し引くと、単一の値が得られます。しかし、私たちは(30、)として密度です
密度次元を(30、)として取得した方法
表現
xi - x_d
NumPyブロードキャストを使用して、2つのオブジェクトの形状を一致させます。この場合、スカラー値xi
を、と同じ値で同じ次元の配列であるかのように扱うことを意味しx_d
ます。
abs
小なりの比較機能とは、そう表現することを、numpyのアレイと要素単位で動作します
(abs(xi - x_d) < 0.5)
長さ30の配列(と同じサイズx_d
)になります。この配列の各エントリは、の各要素に適用される条件のいずれかTrue
またはそれにFalse
依存しx_d
ます。
これは、の複数の値に対して繰り返されxi
、複数の異なる長さ-30の配列になります。
sum
これらの配列を呼び出した結果、要素ごとに追加されます(また、ブロードキャストの運によって、sum
関数のデフォルトの初期値は0であるため、最初の配列は要素ごとに0に追加され、変更されません)。
したがって、最終結果では、長さ30の配列になります。ここで、配列の項目0は、xi
の0番目の要素に基づいて絶対値条件を満たす値の数をカウントしますx_d
。出力配列の項目1は、xi
の1番目の要素で絶対値条件を満たす値の数をカウントx_d
します。
これはいくつかのテストデータの例です:
In [31]: x_d = np.linspace(-4, 8, 30)
In [32]: x = np.arange(20)
In [33]: x
Out[33]:
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19])
In [34]: density = sum((abs(xi - x_d) < 0.5) for xi in x)
In [35]: density
Out[35]:
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1])
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加