2016-11-12 1 views
0

나는 N x Numpy 배열을 가지고 있습니다. 나는 paricular 방식으로 i 번째 열을 조작해야하고, 나머지는 다른 방식으로 처리해야합니다. 나는 이것을 어떻게 numpythonic 방식으로 하는가? 매개 변수 i는 사용할 함수에 전달됩니다.Numpy 하나의 열을 제외한 모든 것을 조작하십시오.

예 :

a=np.zeros([4,4]) 

지금, 우리는 1, 2, 4 필요 현명 요소를 제곱을 말한다. 세 번째 요소는 요소 단위로 큐브됩니다.

+0

은 무엇을 지금까지 시도 했습니까? –

+0

어레이를 조작하기를 기대하는 방법을 * 표시하지 않으면 대답 할 수 없습니다. 예를 들어주십시오. –

+0

예를 들어 @ajcr – Thiagarajan

답변

1
most_of_the_result = do_whatever(numpy.delete(arr, col_index, axis=1)) 
insertion_column = do_other_thing(arr[:, col_index]) 

result = numpy.insert(most_of_the_result, col_index, insertion_column, axis=1) 

또는

는 는 는
result = do_whatever(arr) 
special_column = do_other_thing(arr[:, col_index]) 
result[:, col_index] = special_column 
0

일련의 숫자를 사용하여 조작 할 열을 선택할 수 있습니다. 예를 들어, 다음과 같이 말할 수 있습니다.

a[:,(0,1,3)] = a[:,(0,1,3)]**2 

제곱근 1, 2 및 4입니다. 0부터 인덱싱됩니다. 모든 전원에 0을 제기하는 것은 여전히 ​​0이기 때문에 더 일반적으로 당신은 단지 열 X을 제외한 모든 조작하려는 경우

, 당신은

sel = range(a.shape[1]) 
sel.remove(X) 
a[:, sel] = a[:, sel]**2 
+0

배열이 매우 커서 선택한 열을 매개 변수로 전달합니다. – Thiagarajan

+0

그럼 새로운 정보가 있습니다. 세트를 매개 변수로 전달할 수 없습니까? ''x '열을 제거하고 싶다면'sel = range (N)','sel.remove (X)'와 같은 것을 할 수 있습니다. 여기서 'N'은 많은 수의 열입니까? –

0

,의는 2 초를 사용 할 수 있습니다.

import numpy as np 
a = np.full((4, 4), 2.0) 
a[:, 2] = a[:, 2]**3 
ci = [i for i in range(a.shape[1]) if i != 2] 
a[:, ci] = a[:, ci]**2 
관련 문제