python numpy切片列与不同行的不同切片索引

时间:2018-01-03 03:12:22

标签: python arrays numpy

假设我有二维numpy数组,例如:

arr = np.arange(15).reshape(5,3)

array([[ 0,  1,  2],
       [ 3,  4,  5],
       [ 6,  7,  8],
       [ 9, 10, 11],
       [12, 13, 14]])

我想为不同的行有效地切片不同的列。 例如,我希望第0行为0:2,第1行为1:3,第2行为0:2,第3行为1:3,第4行为1:3。我可以通过循环低效地执行此操作:

min_index = (0,1,0,1,1)
max_index = (2,3,2,3,3)

newarr = []
count = 0
for min_,max_ in zip(min_index,max_index):
    newarr.append(arr[count,min_:max_])
    count += 1
np.array(newarr)

array([[ 0,  1],
       [ 4,  5],
       [ 6,  7],
       [10, 11],
       [13, 14]])

这有效,但效率不高。有没有办法有效地做这个切片?我试过了

arr[range(5),(0,1,0,1,0):(1,2,1,2,1)]

但这不起作用。

0 个答案:

没有答案