有没有有效的方法来撤销NumPy 就地?
答案 0 :(得分:0)
它不优雅,但如果就地是最重要的因素而且运行时不那么重要(因为numpy切片远远超过迭代方法),你总是可以从左右交换索引数组的末尾直到指数收敛:
def reverse(arr):
ln = arr.shape[0]
lidx, ridx = 0, ln - 1
while lidx < ridx:
rtmp = arr[ridx]
arr[ridx] = arr[lidx]
arr[lidx] = rtmp
lidx += 1
ridx -= 1
return arr
这适用于奇数和偶数长度的数组。甚至:
>>> reverse(np.arange(4))
array([3, 2, 1, 0])
奇:
>>> reverse(np.arange(5))
array([4, 3, 2, 1, 0])
并证明它就位:
>>> y = np.arange(6)
>>> x = reverse(y)
>>> x is y
True
答案 1 :(得分:-1)
正如评论中已经提到的那样,这似乎可行。
A = np.array([2,1,3])
B = A.copy()
B = B[...,::-1]