2013-07-04 4 views
3

NumPy 배열의 일부를 뒤집기 위해 배열 자르기를 사용하려고합니다. 내 배열 NumPy를 사용하여 배열의 일부분을 뒤집습니다

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

다음 내가 원래 배열에보기입니다

b = a[::-1] 

B A 조각을 얻을 수 있습니다, 예를 들어 경우. 내가하고 싶은 것은, 예를 들어, 부분적으로 반전 전망이다

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]) 
을와 indices하여 오프 마음에 들지 않으면
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]) 
관련 문제