【发布时间】:2017-05-11 14:18:32
【问题描述】:
我有一个 3d NumPy 数组,我想从中获取许多切片。这些切片在第一维和第二维中将具有一个或多个长度,而第三维将完整返回。切片应始终为 3d。
我的尝试:
import numpy as np
a = np.zeros((1000, 10, 100))
row_sets = ([19, 20], [21])
col_sets = ([6], [7, 8])
for rows in row_sets:
for cols in col_sets:
b = a[[rows], [cols]]
print(rows, cols, b.shape)
结果:
[19, 20] [6] (1, 2, 100)
[19, 20] [7, 8] (1, 2, 100)
[21] [6] (1, 1, 100)
[21] [7, 8] (1, 2, 100)
如果我从切片中删除嵌套括号:
b = a[rows, cols]
我在第二个维度上遇到了同样的问题,并且没有保留维度:
[19, 20] [6] (2, 100)
[19, 20] [7, 8] (2, 100)
[21] [6] (1, 100)
[21] [7, 8] (2, 100)
我正在寻找的结果是这样的:
[19, 20] [6] (2, 1, 100)
[19, 20] [7, 8] (2, 2, 100)
[21] [6] (1, 1, 100)
[21] [7, 8] (1, 2, 100)
【问题讨论】: