Reverse part of an array using NumPy
我尝试使用数组切片来反转一个麻木数组的一部分。例如,如果我的数组是,
1 | a = np.array([1,2,3,4,5,6]) |
然后我可以得到一片B
1 | b = a[::-1] |
号
它是原始数组上的视图。我想要的是一个部分颠倒的视图,例如
1 | 1,4,3,2,5,6 |
如果您不完全理解numpy的设计方式,我会遇到numpy的性能问题,因此如果可能的话,我希望避免使用"花哨的"索引。
如果你不喜欢一个指数
1 2 3 4 | >>> a = np.array([1,2,3,4,5,6]) >>> a[1:4] = a[1:4][::-1] >>> a array([1, 4, 3, 2, 5, 6]) |
1 2 3 4 | >>> a = np.array([1,2,3,4,5,6]) >>> a[1:4] = a[3:0:-1] >>> a array([1, 4, 3, 2, 5, 6]) |
您可以使用排列矩阵(这是部分反转数组的最麻木的方法)。
1 2 3 4 5 6 7 8 9 10 | a = np.array([1,2,3,4,5,6]) new_order_for_index = [1,4,3,2,5,6] # Careful: index from 1 to n ! # Permutation matrix m = np.zeros( (len(a),len(a)) ) for index , new_index in enumerate(new_order_for_index ): m[index ,new_index -1] = 1 print np.dot(m,a) # np.array([1,4,3,2,5,6]) |
号