在Python中转换3D列表

2024-09-29 23:15:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须按以下方式转换3d列表:

输入:

matrix7 = [[['A ', 'E ', 'C#'], ['B ', 'E ', 'C#'], ['C ', 'E ', 'C#']], 
[['  ', 'F#', 'D '], ['  ', 'F#', 'D '], ['  ', 'F#', 'D ']], 
[['  ', 'E ', 'B '], ['  ', 'E ', 'B '], ['  ', 'E ', 'B ']], 
[['  ', 'E ', 'C#'], ['  ', 'E ', 'C#'], ['  ', 'E ', 'C#']], 
[['  ', 'F#', 'D '], ['  ', 'F#', 'D '], ['  ', 'F#', 'D ']], 
[['  ', 'E ', 'B '], ['  ', 'E ', 'B '], ['  ', 'E ', 'B ']], 
[['  ', '  ', '  '], ['  ', '  ', '  '], ['  ', '  ', '  ']], 
[['  ', 'E ', 'C#'], ['  ', 'E ', 'C#'], ['  ', 'E ', 'C#']]]

期望输出:

^{pr2}$

我有以下程序:

matrix8 = []
for index in matrix7:
    matrix8 = numpy.array(matrix7).transpose()
    matrix9 = matrix8.tolist()
print matrix9

这给了我错误的输出:

[[['A ', 'E ', 'C#'], ['B ', 'E ', 'C#'], ['C ', 'E ', 'C#']], 
[['  ', 'F#', 'D '], ['  ', 'F#', 'D '], ['  ', 'F#', 'D ']], 
[['  ', 'E ', 'B '], ['  ', 'E ', 'B '], ['  ', 'E ', 'B ']], 
[['  ', 'E ', 'C#'], ['  ', 'E ', 'C#'], ['  ', 'E ', 'C#']], 
[['  ', 'F#', 'D '], ['  ', 'F#', 'D '], ['  ', 'F#', 'D ']], 
[['  ', 'E ', 'B '], ['  ', 'E ', 'B '], ['  ', 'E ', 'B ']], 
[['  ', '  ', '  '], ['  ', '  ', '  '], ['  ', '  ', '  ']], 
[['  ', 'E ', 'C#'], ['  ', 'E ', 'C#'], ['  ', 'E ', 'C#']]]

有人能帮我吗?在


Tags: in程序numpy列表forindex方式array
2条回答

我想这就是你想要的:

numpy.transpose(matrix7, axes=(1, 0, 2)).tolist()  # The 'axes' attribute tells transpose to swaps axes 0 and 1, leaving the last one alone.

输出:

^{pr2}$

你不需要numpy来做这个:

>>> [list(x) for x in zip(*matrix7)]
[[['A ', 'E ', 'C#'], ['  ', 'F#', 'D '], ['  ', 'E ', 'B '], ['  ', 'E ', 'C#'], ['  ', 'F#', 'D '], ['  ', 'E ', 'B '], ['  ', '  ', '  '], ['  ', 'E ', 'C#']],
 [['B ', 'E ', 'C#'], ['  ', 'F#', 'D '], ['  ', 'E ', 'B '], ['  ', 'E ', 'C#'], ['  ', 'F#', 'D '], ['  ', 'E ', 'B '], ['  ', '  ', '  '], ['  ', 'E ', 'C#']],
 [['C ', 'E ', 'C#'], ['  ', 'F#', 'D '], ['  ', 'E ', 'B '], ['  ', 'E ', 'C#'], ['  ', 'F#', 'D '], ['  ', 'E ', 'B '], ['  ', '  ', '  '], ['  ', 'E ', 'C#']]]

或者,如果您不介意获取列表元组的列表,只需:

^{pr2}$

或者,在Python 2.x中,甚至更少:

>>> zip(*matrix7)
[(['A ', 'E ', 'C#'], ['  ', 'F#', 'D '], ['  ', 'E ', 'B '], ['  ', 'E ', 'C#'], ['  ', 'F#', 'D '], ['  ', 'E ', 'B '], ['  ', '  ', '  '], ['  ', 'E ', 'C#']),
 (['B ', 'E ', 'C#'], ['  ', 'F#', 'D '], ['  ', 'E ', 'B '], ['  ', 'E ', 'C#'], ['  ', 'F#', 'D '], ['  ', 'E ', 'B '], ['  ', '  ', '  '], ['  ', 'E ', 'C#']),
 (['C ', 'E ', 'C#'], ['  ', 'F#', 'D '], ['  ', 'E ', 'B '], ['  ', 'E ', 'C#'], ['  ', 'F#', 'D '], ['  ', 'E ', 'B '], ['  ', '  ', '  '], ['  ', 'E ', 'C#'])]

相关问题 更多 >

    热门问题