所以,這里我有一個 numpy 陣列,array([[-1.228, 0.709, 0.], [ 0., 2.836, 0. ], [ 1.228, 0.709, 0. ]])。我的計劃是用一個向量(比如 [1,2,3])對該陣列的所有行執行加法,然后將結果附加到它的末尾,即添加另外三行?我想執行相同的程序,例如 5 次,以便將向量僅添加到最后三行,這是前一次計算(加法)的結果。有什么建議?
uj5u.com熱心網友回復:
只需np.append沿第一個軸使用:
import numpy as np
a = np.array([[-1.228, 0.709, 0. ], [ 0. , 2.836, 0. ], [ 1.228, 0.709, 0. ]])
v = np.array([1, 2, 3])
new_a = np.append(a, a v, axis=0)
uj5u.com熱心網友回復:
對于加法部分,只需撰寫類似a[0] [1,2,3](其中 a 是您的陣列)的內容,numpy 將按預期按元素執行加法。
對于 appenda=np.append(a, [line], axis=1)是您要查找的內容,其中 line 是您要添加的新行,例如前一個總和的結果。
由于負索引,可以輕松地重復選擇最后三行的迭代:如果您使用a[-1],a[-2]并且a[-3]您一定會選擇最后三行
uj5u.com熱心網友回復:
如果您確實需要將結果保存在單個陣列中,更好的選擇是在開始時創建它并對其執行所需的操作。
arr = np.array([[-1.228, 0.709, 0. ], [ 0. , 2.836, 0. ], [ 1.228, 0.709, 0. ]])
vector = np.array([1,2,3])
N = 5
multiarr = np.tile(arr, (1,N))
>>> multiarr
array([[-1.228, 0.709, 0. , -1.228, 0.709, 0. , -1.228, 0.709, 0. , -1.228, 0.709, 0. , -1.228, 0.709, 0. ],
[ 0. , 2.836, 0. , 0. , 2.836, 0. , 0. , 2.836, 0. , 0. , 2.836, 0. , 0. , 2.836, 0. ],
[ 1.228, 0.709, 0. , 1.228, 0.709, 0. , 1.228, 0.709, 0. , 1.228, 0.709, 0. , 1.228, 0.709, 0. ]])
multivector = (vector * np.arange(N)[:, None]).ravel()
>>> multivector
array([ 0, 0, 0, 1, 2, 3, 2, 4, 6, 3, 6, 9, 4, 8, 12])
>>> multiarr multivector
array([[-1.228, 0.709, 0. , -0.228, 2.709, 3. , 0.772, 4.709, 6. , 1.772, 6.709, 9. , 2.772, 8.709, 12. ],
[ 0. , 2.836, 0. , 1. , 4.836, 3. , 2. , 6.836, 6. , 3. , 8.836, 9. , 4. , 10.836, 12. ],
[ 1.228, 0.709, 0. , 2.228, 2.709, 3. , 3.228, 4.709, 6. , 4.228, 6.709, 9. , 5.228, 8.709, 12. ]])
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/368017.html
