Python 有选择地访问numpy 3D矩阵的行

Python 有选择地访问numpy 3D矩阵的行,python,numpy,matrix,matrix-indexing,Python,Numpy,Matrix,Matrix Indexing,有没有办法索引3D numpy矩阵以有选择地获取每个第i层的第i行 e、 g.我有一个RxNxR矩阵,我想抓住第一层的第一行,第二层的第二行,第三层的第三行,等等,最后得到一个RxN矩阵 我能在一次手术中做到吗 我认为这应该可以做到: import numpy as np matrix = ... result = np.zeros((matrix.shape[0], matrix.shape[1])) for i in range(0, len(matrix)): result[i]

有没有办法索引3D numpy矩阵以有选择地获取每个第i层的第i行

e、 g.我有一个RxNxR矩阵,我想抓住第一层的第一行,第二层的第二行,第三层的第三行,等等,最后得到一个RxN矩阵


我能在一次手术中做到吗

我认为这应该可以做到:

import numpy as np
matrix = ...
result = np.zeros((matrix.shape[0], matrix.shape[1]))

for i in range(0, len(matrix)):
    result[i] = matrix[i][i]

我相信这应该可以做到:

import numpy as np
matrix = ...
result = np.zeros((matrix.shape[0], matrix.shape[1]))

for i in range(0, len(matrix)):
    result[i] = matrix[i][i]

我认为您可以使用理解-取决于您定义为“层”的维度,等等,但这会起作用:

a = np.array([...])

[a[:, i, 0] for i in range(np.shape(a)[1])]

我认为您可以使用理解-取决于您定义为“层”的维度,等等,但这会起作用:

a = np.array([...])

[a[:, i, 0] for i in range(np.shape(a)[1])]
使用该功能:

a = np.arange(27).reshape(3, 3, 3)
np.diagonal(a, offset=0, axis1=0, axis2=1).T
给予

使用该功能:

a = np.arange(27).reshape(3, 3, 3)
np.diagonal(a, offset=0, axis1=0, axis2=1).T
给予


这是否可以推广到R=1的情况?假设我有一个1x3x1矩阵,这个命令只给我第一个元素,而不是整行。如果矩阵是3x1x1,它就工作了。。。哪个维度对应于图层?或者你也可以尝试一下np.diagonal(a,offset=0,axis1=0,axis2=2),它成功了!(图层是第三维的)。谢谢这是否可以推广到R=1的情况?假设我有一个1x3x1矩阵,这个命令只给我第一个元素,而不是整行。如果矩阵是3x1x1,它就工作了。。。哪个维度对应于图层?或者你也可以尝试一下np.diagonal(a,offset=0,axis1=0,axis2=2),它成功了!(图层是第三维的)。谢谢