2012-10-26 2 views
0

저는 함수 인스턴스의 배열과 그 인스턴스에 적용 할 인수 배열이 있습니다. 함수 인스턴스의 배열은 임의의 크기 일 수 있습니다. 다음과 같이 정의 (예, 각각의 기능과 동일한 인수를 사용)이다 :Python : 배열의 함수에 인수를 매핑하십시오.

a = numpy.array([1., 2., 3.]) 
b = numpy.array([1., 2., 3.]) 
c = numpy.array([1., 2., 3.]) 

함수 인스턴스의 배열이 같다 :

fcn1(a, b, c) 
fcn2(a, b, c) 

각 함수의 인수는 예를 들면 플로트의 배열이며 다음 :

[<function fcn1 at 0x030A44F0> <function fcn2 at 0x030A4530>] 

나는 각 배열 인스턴스에 함수 인수를 매핑하려고합니다.

지금까지 내가 좋아하는 단순한 뭔가를 시도 :

for f in fcn: 
    print f(a, b, c) 

하지만 기능을 구성하는 방법, 그들은 X가 a, bc의 각각의 원소의 개수 인 배열의 X 번호를 반환합니다. 예를 들어, 단순히 호출하는 경우 :

fcn1(a, b, c) 

그것은 돌아갑니다 (입력 인수의 각 세 가지 요소를주의 세 가지 배열이 반환) : 내 간단한 루프를 실행할 때

[array([0.2343, 0.4943, ..., 0.8943, 0.7115]), array([0.2343, 0.4853, ..., 0.8555, 0.1915]), array([0.7773, 0.1343, ..., 0.8045, 0.9994])] 

그래서 어떤 일이 우아 함수 인스턴스에 인수를 적용하는 방법에 대한

[array([0.2343, 0.4943, ..., 0.8943, 0.7115]), array([0.2343, 0.4853, ..., 0.8555, 0.1915]), array([0.7773, 0.1343, ..., 0.8045, 0.9994])] 
[array([0.2343, 0.4943, ..., 0.8943, 0.7115]), array([0.2343, 0.4853, ..., 0.8555, 0.1915]), array([0.7773, 0.1343, ..., 0.8045, 0.9994])] 

어떤 생각 : 배열의 두 배열입니까?

+1

루프에서 벗어난 것은 무엇입니까? – Marcin

+0

각 함수가 X 배열 수를 반환하기 때문에 결과가 중복됩니다. 여기서 X는 각 입력 인수의 요소 수입니다. –

+0

이 정보를 질문에 통합하십시오. 중복이 어떻게 발생하는지에 대해서도 명확하지 않으므로 입력 및 출력 예제와 관련시킬 수 있다면 문제의 이해를 크게 도울 수 있습니다. – Marcin

답변

1

내가 제대로 이해 해요,하지만 당신은 단지 원하는 않은 경우 확실하지 : 나는이 권리를 읽고 있어요 경우

for f in fcn: 
    for ix in range(len(a)): 
     print f(a[ix], b[ix], c[ix]) 
+0

네, 그 아이디어입니다,하지만 a, b, c 요소를 반복하지 않도록하고 싶습니다. 함수는 모두 벡터화를 이용하기 위해 다시 작성되었습니다. –

+0

@ strimp099 그래서 문제는 행이 아닌 열에 함수를 적용하려고한다는 것입니다. – Marcin

+0

입력 배열의 요소를 반복 할 때 조언을 사용했습니다. 배열과는 반대로 float를 받아들이도록 함수를 수정해야했습니다. –

2

, 당신은리스트의 목록을 포함하는 데이터 구조와 끝까지 할 귀하의 기능 결과.

function_result_set = [func(*argument_list) for func in function_list] 

이 임의의 길이 함수의 시퀀스 (또는 클래스 같은 사실 callables에서)만큼 각 기능 len(argument_list) 인수 일 수로 작동 할 것이다.

관련 문제