我想從Numpy數組表示的圖像中移除行或列。我的圖像類型是uint16和2560 x 2176.作爲一個例子,說我想刪除前16列,使其2560 x 2160.高效地移除numpy圖像數組的行/列
我是一個MATLAB到Numpy的轉換,並在MATLAB中使用類似:
A = rand(2560, 2196);
A(:, 1:16) = [];
據我瞭解,這將刪除列到位,並通過不復制到新陣列節省了大量的時間。
對於Numpy,以前的帖子已經使用過像numpy.delete
這樣的命令。但是,文檔很清楚,它會返回一份副本,因此我必須將副本重新分配給A.這似乎會浪費大量時間進行復制。
import numpy as np
A = np.random.rand(2560,2196)
A = np.delete(A, np.r_[:16], 1)
這是否真的和就地刪除一樣快?我覺得我必須錯過一個更好的方法,或者不知道python在刪除期間如何處理數組存儲。
有關以前的帖子:
Removing rows in NumPy efficiently
Documentation for numpy.delete
你有沒有那個「Matlab的刪除列的地方,而不復制數據」這一事實的內容?我找不到任何正式的東西,而且從我讀過的東西中,我必須複製整個數組,這對我來說似乎是合理的。在numpy中,你會使用基本的切片(蒂亞戈的回答)來避免複製。考慮到這意味着整個原始數組仍將存在於內存中,因爲您獲得了一個視圖。 – jorgeca