python - 矩阵转置

标签 python matrix list-comprehension

我试图在不实际使用矩阵大小的情况下在 python 中找到矩阵的转置。

我需要使用列表推导来做类似 [[row[i] for row in test] for i in range(n)] 的事情,其中​​ test 是一个 nxn 矩阵而不实际使用 n。

最佳答案

如果test是由列表的列表表示的矩阵,那么

zip(*test)

是转置。例如,

In [16]: t = [[1,2,3],[4,5,6]]

In [17]: t
Out[17]: [[1, 2, 3], 
          [4, 5, 6]]

In [18]: zip(*t)
Out[18]: [(1, 4), 
          (2, 5), 
          (3, 6)]

(输出已格式化以更清楚地显示结果)。

理解zip(*t)先学习how zip works ,然后研究argument unpacking .它有点令人费解,但一旦您了解它的工作原理,您就会成为这两个概念的专家,而且效果非常令人愉悦。


这里没有理由使用列表推导式,但无论如何你都可以这样做:

In [21]: [[row[i] for row in t] for i in range(len(t[1]))]
Out[21]: [[1, 4], [2, 5], [3, 6]]

(len(t[1]) 给出列数。)

关于python - 矩阵转置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11767586/

相关文章:

python - 如何获取用户输入来引用 Python 中的变量?

python - 在 Django 中,如何调用启动时间较慢的子进程

python - sys.exit() 不会终止我的程序

flash - 扭曲网格中的坐标

python - 读取 CSV 文件中的所有列?

python - boost::python 从 numpy.ndarray 返回值中提取 C++ 值

r - 有没有办法命名列名或行名?

python - 在 boolean 值 Python 列表上使用列表理解时出现意外结果

c# - 理解代码

python - (Python) 如何在不执行 A*B 的情况下获得对角线 (A*B)?