使用花式索引可以在 O(n) 时间和 O(n) 空间中实现:
>>> import numpy as np>>> a = np.array([[10, 20, 30, 40, 50],... [ 6, 7, 8, 9, 10]])>>> permutation = [0, 4, 1, 3, 2]>>> idx = np.empty_like(permutation)>>> idx[permutation] = np.arange(len(permutation))>>> a[:, idx] # return a rearranged copyarray([[10, 30, 50, 40, 20], [ 6, 8, 10, 9, 7]])>>> a[:] = a[:, idx] # in-place modification of a
请注意,
a[:, idx]它返回的是副本,而不是视图。的
O(1) k-空间的解决方案是不可能的在一般情况下,由于如何numpy的阵列在内存中跨距。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)