這使用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
並將其廣播到相同的形狀的外產物(在每一列中的值複製),使得該最終操作看起來像
[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
編輯該問題以顯示一個小的工作示例。 –