这样考虑numpy array
:
>>> a = np.array([[1, 2, 3, 0, 1], [2, 3, 2, 2, 2], [0, 3, 3, 2, 2]])
>>> a
array([[1, 2, 3, 0, 1],
[2, 3, 2, 2, 2],
[0, 3, 3, 2, 2]])
还有一个array
,其中包含要分割的几列索引(一个特定的列可以成对出现):
b = [[0,1], [0,3], [1,4]]
如何使用a
来切片/广播/跨步b
以得到如下结果:
array([[[1, 2],
[2, 3],
[0, 3]],
[[1, 0],
[2, 2],
[0, 2]],
[[2, 1],
[3, 2],
[3, 2]]])
答案 0 :(得分:1)
使用b
作为列索引可以对数组进行子集化,然后转置结果:
a[:, b].swapaxes(0, 1)
# array([[[1, 2],
# [2, 3],
# [0, 3]],
# [[1, 0],
# [2, 2],
# [0, 2]],
# [[2, 1],
# [3, 2],
# [3, 2]]])