2013-07-04 4 views
3

Я пытаюсь использовать срез массива для обратной части массива NumPy. Если мой массив, например,Обратная часть массива с использованием NumPy

a = np.array([1,2,3,4,5,6]) 

тогда я могу получить кусок б

b = a[::-1] 

который является взгляд на исходный массив. То, что я хотел бы это представление, которое частично отменено, например

1,4,3,2,5,6 

я столкнулся с проблемами с производительностью NumPy, если вы не играете вместе с тем, как именно она предназначена, поэтому я хотел бы избежать «фантазии «индексирование, если это возможно.

ответ

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]) 
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]) 
0

Вы можете использовать permutation matrices (это numpiest способ частично обратный массив).

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]) 
Смежные вопросы