我有一个功能:
remove_last(x):
如果x
是一维向量,那么我希望它删除其中的最后一个元素。
有时x
可能是这种向量的矩阵,我希望从中删除最后一个元素。
在这种情况下,我需要删除最后一列。
使用示例:
aa = np.asarray([1,2,3])
print remove_last(aa)
#Output: [1 2]
bb = np.asarray([aa,2*aa,3*aa,4*aa])
print remove_last(aa)
#Output: [[1 2], [2 4], [3 6], [4 8]]
到目前为止,我有:
def remove_last(x):
assert(x.ndim<=2)
if x.ndim==1:
return x[:-1]
else:
return x[:,:-1]
哪个有效,但它不是很好。
必须有更好的方法,使用numpy着名的切片机制
答案 0 :(得分:3)
有。
您要找的是...
ellipsis slicing marker.
它说&#34;填写一些:
,直到切片说明符的数量与数组的维度匹配。&#34;
随着你的代码变成:
def remove_last(x):
return x[...,:-1]
清洁和pythonic。