ゴツゴツした抽出部分行列



Numpy Extraction Submatrix



numpy行列またはndarrayから部分行列を抽出するか、np.ix_関数を使用するのが最速です。 ndarrayがmatrixよりも速いとは思いません。レベルは制限されており、多くの軸が正です。

import numpy as np # ndarray mtx = np.random.random((300, 300)) a = [1,3,5,7,8,9,12,16,23,45,64,72,89] b = [1,3,5,7,8,9,12,16,23,45,64,72,89] # M = np.matrixlib.matrix(mtx) indices = np.ix_(a,b) c = M[indices] c.shape %timeit c = mtx[indices] %timeit c = M[indices] %timeit c = mtx[:, b][a, :] %timeit c = mtx[a, :][:, b] 100000 loops, best of 3: 2.75 µs per loop 100000 loops, best of 3: 3.99 µs per loop 100000 loops, best of 3: 10.7 µs per loop 100000 loops, best of 3: 8.56 µs per loop