2014-07-22 3 views
0

3D numpy 배열의 벡터에 함수를 적용하는 방법에 대한 질문이 있습니다. 내 문제는 다음과 같습니다3D numpy 배열의 벡터에 함수 적용

이 가장 좋은 방법은 무엇입니까
[0 6], [1 7], [2 8], [4 10], [3 9] ... 

:

a = np.arange(24) 
a = a.reshape([4,3,2]) 

내가 그들을 수정하는 다음의 모든 벡터에 함수를 적용 할 : 이제 나는이 같은 배열을 가정 해 봅시다 사용? 내 배열이 꽤 크기 때문에 3 차원 중 2 가지를 반복하면 꽤 길어집니다 ...

미리 감사드립니다!

답변

1

기능 np.apply_along_axis을 사용할 수 있습니다. doc :

주어진 축을 따라 1 차원 슬라이스에 기능을 적용하십시오. 예를 들어

:

내가 0 번째 축 사용했습니다 위의 예에서
>>> import numpy as np 
>>> a = np.arange(24) 
>>> a = a.reshape([4,3,2]) 
>>> 
>>> def my_func(a): 
... print "vector: " + str(a) 
... return sum(a)/len(a) 
... 
>>> np.apply_along_axis(my_func, 0, a) 
vector: [ 0 6 12 18] 
vector: [ 1 7 13 19] 
vector: [ 2 8 14 20] 
vector: [ 3 9 15 21] 
vector: [ 4 10 16 22] 
vector: [ 5 11 17 23] 
array([[ 9, 10], 
     [11, 12], 
     [13, 14]]) 

. n 축이 필요하면이 함수 n 번을 실행할 수 있습니다.

+0

이들은 OP가 찾고있는 벡터로 보이지 않습니다. –

+0

고마워요. 시험해 볼게! – Haddock