python - 在 Python : is there something like -0? 中对列表进行切片

标签 python arrays numpy list-comprehension

<分区>

我有一个 3D 阵列,想将它分成许多子体积。 到目前为止,这是我的代码:

# this results in a 3D array
arr = trainMasks[0, 0, :, :, :]
crop = 3
arrs = [arr[x:-(crop - x), y:-(crop - y), z:-(crop - z)]
        for x in range(crop + 1)
        for y in range(crop + 1)
        for z in range(crop + 1)]
  • 如果我使用 x in range(crop)x 只会上升到 crop - 1,即 x 维度中的最后一个条目总是掉线
  • 如果我使用 x in range(crop+1)x 它会上升到 crop,这将导致切片 arr[crop:-0, ...] 其形状为 [0, y_dim, z_dim]

我知道通常的答案,只是降低上限,像这样:arr[crop:, :, :]。通常这很方便。但是我如何在列表理解中做到这一点?

最佳答案

在这种情况下,最好避免使用负索引。

请记住,对于 i>0a[-i] 等同于 a[len(a)-i]。但在您的情况下,您还需要为 i==0 工作。

这个有效:

d1, d2, d3 = arr.shape
arrs = [arr[ x : d1-(crop-x), y : d2-(crop-y), z : d3-(crop-z)]
        for x in range(crop + 1)
        for y in range(crop + 1)
        for z in range(crop + 1)]

关于python - 在 Python : is there something like -0? 中对列表进行切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40300622/

相关文章:

python - Robot Framework - 使用参数测试关键字是否失败

python - 如何将函数应用于 Pyspark 数据框列?

Javascript:了解应用于小费计算器的 map 和 reduce

python - 按列值连接两个数据框

python - 如何 "Permanently"删除Mlflow中的实验?

java - 按多列中的值对二维数组进行排序

python - 检查相邻值是否在 Numpy 矩阵中

python - 绘制到plot_surface - 无法正确地将数据转换为所需的格式

python - 二维数组的 python 中的元素 AND 或 OR 操作

python - np.array arr.itemsize 与 sys.getsizeof(arr[0])