假设我有二维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)]
但这不起作用。