2 回答
TA贡献1848条经验 获得超6个赞
您可以advanced indexing按照此处的说明使用。您将必须传递[0, 1]您的情况下的行 ID 以及列 ID2, 3和1, 2. 这里的2,3意思[2:4]和1, 2意思[1:3]
import numpy as np
a=np.arange(2*3*5).reshape(2, 3, 5)
rows = np.array([[0], [1]], dtype=np.intp)
cols = np.array([[2, 3], [1, 2]], dtype=np.intp)
aa = np.stack(a[rows, :, cols]).swapaxes(1, 2)
# array([[[ 2, 3],
# [ 7, 8],
# [12, 13]],
# [[16, 17],
# [21, 22],
# [26, 27]]])
另一种避免swapaxes并以所需格式获得结果的等效方法是
aa = np.stack(a[rows, :, cols], axis=2).T
我想出的第三种方法是传递索引列表。这里[0, 0]将对应[2,3]和[1, 1]将对应[1, 2]。这swapaxes只是为了获得您想要的输出格式
a[[[0,0], [1,1]], :, [[2,3], [1,2]]].swapaxes(1,2)
TA贡献1813条经验 获得超2个赞
一个解法 ...
import numpy as np
a = np.arange(2*3*5).reshape(2, 3, 5)
np.array([a[0,:,2:4], a[1,:,1:3]])
添加回答
举报