我正在尝试使用数组切片来反转NumPy数组的一部分。例如,如果我的数组是
a = np.array([1,2,3,4,5,6])
然后我可以得到一个切片b
b = a[::-1]
这是原始数组的视图。我想要的是一个部分逆转的视图,例如
1,4,3,2,5,6
如果你没有完全按照它的设计方式进行游戏,我遇到了NumPy的性能问题,所以如果有可能的话,我想避免使用“花式”索引。
答案 0 :(得分:5)
如果你不喜欢一个指数
>>> 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 :(得分: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])
答案 2 :(得分:0)
您可以使用permutation matrices(这是部分反转数组的最简单方法)。
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])