gpt4 book ai didi

python-3.x - 在 Python 中切片 3d 数组列表

转载 作者:行者123 更新时间:2023-12-03 12:30:40 25 4
gpt4 key购买 nike

我刚从 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]]]

现在,如果我想使用 for 循环访问元素“aa”、“bb”、“cc”、“dd”和“ee”,我可以使用以下代码轻松实现:

for i in range(0,5):
print(routine_matrix[i][0][1])

但是,我想做的是,我想一次性从 3d 列表中切片 - 类似于:

print(routine_matrix[0:,0,1])

但是,我没有得到我想要的输出。所以我要问的是如何一次性切掉 'aa'、'bb'、'cc'、'dd' 和 'ee'。

感谢您的宝贵时间!

最佳答案

也许你已经找到了答案,但无论如何这是我的答案:

在 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)

例程矩阵:

[[[ 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]]]

现在,根据你的问题,你对 1、13、25、37、49 感兴趣,它们是每个内部矩阵的第 0 行和第 1 列的第一个元素

所以,为了实现这一点,我们这样做

print(routine_matrix[:, 0, 1])

在这里理解切片:

  • ':'表示选择所有的矩阵
  • '0'表示只选择所有矩阵的第0行

即:[0 1 2 3]、[12、13、14、15]、[24、25、26、27]、[36、37、38、39]、[48、49、50、51 ]

  • '1'表示在上面选择的所有行中只选择第一列(python中数组索引从0开始)

即:[1, 13, 25, 37, 49]

因此输出:

[ 1 13 25 37 49]

在你的情况下它将是 ['aa' 'bb' 'cc' 'dd' 'ee']

关于python-3.x - 在 Python 中切片 3d 数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49956413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com