Numpy 配列で表される画像から行または列を削除しようとしています。私の画像は uint16 型で 2560 x 2176 です。例として、最初の 16 列を削除して 2560 x 2160 にしたいとします。
私は 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が削除中に配列ストレージを処理する方法を理解していないに違いないと感じています。
関連する以前の投稿:
NumPy の行を効率的に削除
する numpy.delete のドキュメント