このbroadcastingを使用するのはかなり簡単です。例えば
:
>>> import numpy as np
>>> dx = np.array([[1], [2], [3]])
>>> dx
array([[1],
[2],
[3]])
>>> dx * np.arange(4)
array([[0, 1, 2, 3],
[0, 2, 4, 6],
[0, 3, 6, 9]])
>>> x = np.array([[10], [10], [10]])
>>> x - dx * np.arange(4)
array([[10, 9, 8, 7],
[10, 8, 6, 4],
[10, 7, 4, 1]])
は何放送、一般的に、あなたの配列は互換性の形状である場合に、素敵な方法で、すべての軸に沿って操作を適用されません。
>>> dx * np.arange(4)
array([[0, 1, 2, 3],
[0, 2, 4, 6],
[0, 3, 6, 9]])
numpyのはouter product、すなわち:
[1] [0 1*1 2*1 3*1]
[2] * [0 1 2 3] = [0 1*2 2*2 3*2]
[3] [0 1*3 2*3 3*3]
を取っているし、これはあなたがx
から減算したいすべての値を与える:この手順で行って。 x - dx * np.arange(4)
をブロードキャストする列ベクトルx
を受け取り、この最終的な操作は、あなたのLaTeXの式であるように、に等しい
[10 10 10 10] [0 1*1 2*1 3*1]
[10 10 10 10] - [0 1*2 2*2 3*2]
[10 10 10 10] [0 1*3 2*3 3*3]
ように見えるように外積(各列の値をコピー)と同じ形状にそれをブロードキャストします:
[x1 x1-dx x1-2dx x1-3dx]
[x2 x2-dx x2-2dx x2-3dx]
[x3 x3-dx x3-2dx x3-3dx]
実際の配列と予想される最終結果を掲載してください。 – RomanPerekhrest
質問を編集して小さな実例を示します。 –