在python中以基本方式显示矩阵列顺序

在python中以基本方式显示矩阵列顺序,python,matrix,Python,Matrix,我想将每个矩阵列的顺序颠倒如下: A = [[ 4, 8, 12, 16], [ 3, 7, 11, 15], [ 2, 6, 10, 14], [ 1, 5, 9, 13]] 所需结果: A = [[ 1, 5, 9, 13], [ 2, 6, 10, 14], [ 3, 7, 11, 15], [ 4, 8, 12, 16]] 可以看出,每列都改变了顺序 我使用以下代码: B = [row[:] for ro

我想将每个矩阵列的顺序颠倒如下:

A = [[ 4,  8, 12, 16],
     [ 3,  7, 11, 15],
     [ 2,  6, 10, 14],
     [ 1,  5,  9, 13]]
所需结果:

A = [[ 1,  5,  9, 13],
     [ 2,  6, 10, 14],
     [ 3,  7, 11, 15],
     [ 4,  8, 12, 16]]
可以看出,每列都改变了顺序

我使用以下代码:

B = [row[:] for row in A]

k = 0
for i in range(len(A), -1, -1):
    k = k + 1,
    for j in (range(len(A))):
        B[k, j] = A[i, j]

print(B)
但是,我得到以下错误:

TypeError                                 Traceback (most recent call last)
<ipython-input-91-72c0a8d534ec> in <module>()
      9     k = k + 1,
     10     for j in range(len(A)):
---> 11         B[k, j] = A[i, j]
     12 
     13 print(B)

TypeError: list indices must be integers or slices, not tuple
TypeError回溯(最近一次调用)
在()
9K=k+1,
10对于范围内的j(len(A)):
--->11b[k,j]=A[i,j]
12
13印刷品(B)
TypeError:列表索引必须是整数或切片,而不是元组

A
是一个嵌套列表,而不是numpy数组。要垂直翻转,请反转外部列表:

A = A[::-1]
要制作完整副本:

B = [list(row) for row in A[::-1]]
您可以将
列表(行)
替换为
行[:]
行.copy()

如果只想进行适当的二维索引,则需要向嵌套结构中的每个对象传递单独的索引:

B[k][j] = A[i][j]
索引
[k,j]
实际上是
[(k,j)]
。Numpy数组可以接受其索引中的元组,但列表对象不能,错误告诉您。相反,您需要单独访问每个子列表
B[k]
是对嵌套列表的引用,因此可以使用
B[k][j]=…
为其分配元素


您可能还需要注意如何构造外部循环。表达式
范围(len(A),-1,-1)
len(A)
开头,这超出了列表中的范围(根据定义)。您可能想使用
范围(len(A)-1,-1,-1)

谢谢。我想编辑我的基本详细解答。物理学家,谢谢!但即使将代码编辑成B[k][j]=A[i][j,我仍然会得到一个错误。@Avi。请不要像那样更新你的问题。你完全否定了我的回答。如果您现在遇到另一个错误,请提出另一个问题。这里的基本理念是,SO不是一个讨论论坛。这是一个问答网站,旨在帮助未来的读者。回答完问题后完全改变你的问题在很大程度上违背了目的。@Avi。我已更新了我的答案以解决您的问题issue@Avi. 我真的很欣赏你尝试理解自己的代码而不是接受固定的解决方案的态度。当你准备好了,看看numpy。