我有一个大的(约14,000 x 14,000)方阵,表示为Numpy ndarray
.我希望提取大量的行和列 - 我事先知道的索引,尽管它实际上是所有行和列都不是全零 - 以获得一个新的方阵(大约10,000 x 10,000).
我发现这样做的最快方法是:
> timeit A[np.ix_(indices, indices)] 1 loops, best of 3: 6.19 s per loop
但是,这比进行矩阵乘法所需的时间要慢得多:
> timeit np.multiply(A, A) 1 loops, best of 3: 982 ms per loop
这看起来很奇怪,因为行/列提取和矩阵乘法都需要分配一个新数组(矩阵乘法的结果比提取的结果更大),但矩阵乘法也需要执行额外的计算.
因此,问题是:是否有更有效的方法来执行提取,特别是至少与矩阵乘法一样快?