python - 在 NumPy 中转置存储在一维数组中的矩阵的最快方法?

标签 python arrays numpy matrix

给定一个长度为 N^2 的向量 v,它保存 NxN 矩阵 M 的条目,使用 NumPy 在同一向量表示中计算 M 转置的最快方法是什么?

我知道这可以通过

来完成
v.reshape(N, N).T.flatten()

但是这是最快的方法吗?

我对 M 的中间显式形式不感兴趣。

最佳答案

考虑一个测试用例:

In [207]: N=1000
In [208]: X = np.arange(N*N)

您的代码:

In [209]: Y = X.reshape(N,N).T.flatten()
In [210]: timeit Y = X.reshape(N,N).T.flatten()
5.45 ms ± 13 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

建议的替代方案:

In [211]: Z = X.reshape(N,N).flatten('F')
In [212]: np.allclose(Y,Z)
Out[212]: True
In [213]: timeit Z = X.reshape(N,N).flatten('F')
5.46 ms ± 39.2 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

没有真正的区别。 reshapetranspose 是 View 。

关于python - 在 NumPy 中转置存储在一维数组中的矩阵的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65552941/

相关文章:

python - 为什么 Python 3.5 中的 str.translate 比 Python 3.4 快得多?

python - 如何更改传递给 python C 扩展的 numpy 数组元素?

python - 将空列表附加到 numpy 数组会更改其 dtype

python - 输入记录与 python mapreduce 中的输出记录不匹配

python - 奇怪的 'str'对象不可调用python

javascript - 循环并显示来自 2 个独立数组 Angular 4 的数据

c - 在 C 函数中使用 EOF 读取用户输入并修改数组?

javascript - 从数组中的对象访问单个字段

python - 如何使用 matplotlib 绘制数组中的特定点?

python - 如何让游戏角色(用户) Action 流畅?