有没有办法获得3D矩阵的2D切片(嵌套列表)

时间:2019-05-21 18:25:25

标签: python

我有一些数据存储在3x3x3嵌套列表中,我想从该列表中获取2D图层。

例如,我想在以下列表中执行a [:,:,2],a [0,:,:]或a [:,1 ,:]之类的事情:

a=[
[
    [(0, 0, 0), (0, 0, 1), (0, 0, 2)],
    [(0, 1, 0), (0, 1, 1), (0, 1, 2)],
    [(0, 2, 0), (0, 2, 1), (0, 2, 2)],
],
[
    [(1, 0, 0), (1, 0, 1), (1, 0, 2)],
    [(1, 1, 0), (1, 1, 1), (1, 1, 2)],
    [(1, 2, 0), (1, 2, 1), (1, 2, 2)],
],
[
    [(2, 0, 0), (2, 0, 1), (2, 0, 2)],
    [(2, 1, 0), (2, 1, 1), (2, 1, 2)],
    [(2, 2, 0), (2, 2, 1), (2, 2, 2)],
],]

获得:

[
[(0, 1, 0), (0, 1, 1), (0, 1, 2)],
[(1, 1, 0), (1, 1, 1), (1, 1, 2)],
[(2, 1, 0), (2, 1, 1), (2, 1, 2)],]

我尝试过,但是对列表执行a [:] [1] [:]却没有任何作用,所以我只得到了一个看起来像这样的a [1]:

[
[(1, 0, 0), (1, 0, 1), (1, 0, 2)],
[(1, 1, 0), (1, 1, 1), (1, 1, 2)],
[(1, 2, 0), (1, 2, 1), (1, 2, 2)],]

我不认为我可以使用numpy,因为我使用的jython不支持用c实现的库。

您能帮我找到一种很好的方法吗(或者找到像numpy这样的可在jython上运行的库)?

1 个答案:

答案 0 :(得分:2)

这将收集每个子矩阵的中间行:

[x[1] for x in a]