2013-09-01 2 views
3

FAQ에 저장되어있는 잘 알려진 질문 일 수도 있지만 해결책을 찾을 수는 없습니다. 스칼라 인수의 스칼라 함수를 작성하려고하지만 ndarray 인수를 허용합니다. 도메인 위반으로 인해 예외가 발생할 수 있으므로이 함수는 인수의 도메인 정확성을 검사해야합니다. 이 예는 내가하려고 무엇을 보여줍니다 y[x>0.0]=... 파이썬을 할당에파이썬에서 0 차원 배열을 어떻게 인덱스합니까?

import numpy as np 
def f(x): 
    x = np.asarray(x) 
    y = np.zeros_like(x) 
    y[x>0.0] = 1.0/x 
    return y 

print f(1.0) 

0-d arrays can't be indexed을 말한다. 이 실행을 해결하는 올바른 방법은 무엇입니까?

+1

까다로운). 'y [np.asarray (x> 0.0)] = ...'를 사용하여 속임수를 써야합니다. – seberg

+0

감사합니다. seberg! 나는 왜 그런지 모르지만 그것은 작동합니다! –

+1

스칼라 배열과 (배열) 스칼라의 차이점까지 ... 그리고 부울 인덱스는 적어도 현재는 부울 * 배열 *로만 트리거됩니다. – seberg

답변

2

이 NumPy와에서 잘 작동합니다> = 1.9 (이 글을 쓰는 현재로 출시되지 않음). 이전 버전에서 당신은 여분의 np.asarray 호출에 의해 해결할 수 있습니다

x[np.asarray(x > 0)] = 0 
0

대신 f([1.0])으로 전화 할 수 있습니까?

그렇지 않으면 당신은 할 수 있습니다 :

x = np.asarray(x) 
if x.ndim == 0: 
    x = x[..., None] 
+0

전화하지 말고 scipy.integration.quad 않습니다. 어쨌든, seberg가 트릭을주었습니다. –

관련 문제