python - 使用列表理解在 Python 中转置多维矩阵

标签 python matrix list-comprehension

我有一个 Python 作业,我必须在其中转置一个多维矩阵(3x3、4x4、5x5...)而不使用任何 for 循环,而只使用列表理解。

以 2x2 矩阵为例,我们有:

a2 = [[1, 2], [3, 4]]
n = len(a2)
print [[row[i] for row in a2] for i in range(n)]

但我不确定我是否真的理解它是如何工作的或如何将其调整为 3x3、4x4、5x5... 矩阵

例如,用

a3 = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]

我不一定要你给我答案(还是得自己想办法),但任何提示都会很有帮助!

提前致谢!

最佳答案

我很确定你已经在你的例子中......

a2 = [[1, 2], [3, 4]]  #2x2
n = len(a2)
print [[row[i] for row in a2] for i in range(n)]

a2 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]  #3x3
n = len(a2)
print [[row[i] for row in a2] for i in range(n)]

对象:

a3 = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]

不是 2x2、3x3 或 4x4 -- 它是 2x2x2。您需要准确解释转置对该数据结构的意义。

附带说明一下,如果您没有将列表理解作为约束,那么按照 Lattyware 的建议使用 zip 是您应该这样做的方式——我只是想指出您的解决方案已经适用于 NxN 情况。

关于python - 使用列表理解在 Python 中转置多维矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14524235/

相关文章:

python - 排序文件python的行

algorithm - 在 bool 矩阵中查找 1 的区域填充

python - Python中的递归列表理解?

scala - Scala的理解:生命特征还是语法糖?

c++ - cython - 分配 C++ 类实例指针时出现段错误

python - Scipy griddata 插值在 NaN 上产生大量结果

python - 使用 model.predict() 时出现错误 "converting string to float"

R:每次将一个矩阵中的一行与另一个矩阵中的所有行组合矩阵

c - 静态数组的二维数组索引失败

python - 需要从文本文件创建列表