假設我有一個矩陣。我刪除了一整行,在完成後,我想將刪除的行追加到縮小的矩陣中。我怎樣才能做到這一點?追加矩陣
import numpy as np
A=np.array([[1,2,3],[4,5,6],[7,8,9]])
A1=np.delete(A,1,0)
A2=A[1,:]
np.append(A1,A2,0)
但是這顯示錯誤。
有什麼建議嗎?
假設我有一個矩陣。我刪除了一整行,在完成後,我想將刪除的行追加到縮小的矩陣中。我怎樣才能做到這一點?追加矩陣
import numpy as np
A=np.array([[1,2,3],[4,5,6],[7,8,9]])
A1=np.delete(A,1,0)
A2=A[1,:]
np.append(A1,A2,0)
但是這顯示錯誤。
有什麼建議嗎?
您可以嘗試vstack
改爲:按照垂直順序(行方向)順序堆疊數組。 http://docs.scipy.org/doc/numpy/reference/generated/numpy.vstack.html
In [33]: np.vstack([A1, A2])
Out[33]:
array([[1, 2, 3],
[7, 8, 9],
[4, 5, 6]])
對於0和1都是失敗的。由於它最初是一個3x3矩陣,並且在刪除一行之後,我將它縮減爲2x3矩陣。現在我想追加刪除的行,以便它再次變成3x3。 – user2804160
當你做np.delete
它返回數組沒有刪除的行,而不是刪除的行。所以你的A1
實際上有兩行而不是一行,這就是它失敗的原因。
達到你想要什麼,這應該這樣做:
A1 = A[1]
A = np.delete(A, 1, 0)
result = np.append(A, A1[np.newaxis, :], 0)
這result
將包含:
array([[1, 2, 3],
[7, 8, 9],
[4, 5, 6]])
了這你想要什麼?
請注意,使用np.newaxis
是必要的,使與行數組相同形狀的單行數組A1能夠追加(因爲np.append
要求數組具有相同的維數)。
如何:
def move_row_to_end(A, row):
return A[range(row) + range(row + 1, A.shape[0]) + [row]]
A = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print move_row_to_end(A, 1)
難道我的回答解決您的問題?你遇到過其他問題嗎? – Jon