我刚刚从MATLAB进入python3。所以我的问题可能很愚蠢,虽然我深入研究了这个问题,但无法找到问题的解决方案。所以这是我的问题 - 我使用
创建了一个3d数组列表routine_matrix = [[[0 for k in range(xaxis)] for j in range(yaxis)] for i in range(zaxis)]
routine_matrix[0][0][1] = 'aa'
routine_matrix[1][0][1] = 'bb'
routine_matrix[2][0][1] = 'cc'
routine_matrix[3][0][1] = 'dd'
routine_matrix[4][0][1] = 'ee'
routine_matrix[0][1][1] = 'ff'
routine_matrix[0][2][1] = 'gg'
这就是3d列表的样子:
[[[0, 'aa', 0, 0], [0, 'ff', 0, 0], [0, 'gg', 0, 0]],
[[0, 'bb', 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]],
[[0, 'cc', 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]],
[[0, 'dd', 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]],
[[0, 'ee', 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]]
现在,如果我想访问元素'aa','bb','cc','dd'和'ee',使用for循环我可以使用以下代码轻松完成:
for i in range(0,5):
print(routine_matrix[i][0][1])
但是,我想做的是,我想一次性从3D列表切片 - 如:
print(routine_matrix[0:,0,1])
然而,我没有得到我想要的输出。所以我要问的是如何一次切掉'aa','bb','cc','dd'和'ee'。
谢谢你的时间!
答案 0 :(得分:2)
也许您找到了答案,但是无论如何,这是我的答案:
在3d数组中,切片语法用[矩阵,行,列]表示
import numpy as np
# Below we are creating a 3D matrix similar to your matrix where there are
# 5 matrices each containing 3 rows and 4 columns
routine_matrix = np.arange(5*3*4).reshape((5,3,4))
print(routine_matrix)
routine_matrix:
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]
[[24 25 26 27]
[28 29 30 31]
[32 33 34 35]]
[[36 37 38 39]
[40 41 42 43]
[44 45 46 47]]
[[48 49 50 51]
[52 53 54 55]
[56 57 58 59]]]
现在,根据您的问题,您对每个内部矩阵的第0行第1列的第一个元素1,2,13,25,37,49感兴趣
因此,为了实现这一目标
print(routine_matrix[:, 0, 1])
在这里了解切片:
即:[1、13、25、37、49]
因此输出:
[ 1 13 25 37 49]
在您的情况下,它将为['aa''bb''cc'dd'ee']