This question already has answers here:
How to nicely handle [:-0] slicing?
(3 个回答)
4年前关闭。
我有一个 3D 数组,想把它分成许多子卷。
到目前为止,这是我的代码:
如果我使用 如果我使用
我知道通常的答案,只需降低上限,就像这样:
(3 个回答)
4年前关闭。
我有一个 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>0
, a[-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/
10-16 02:49