2017-10-10 13 views
0

이 질문은 기본적인 질문이며 아마도 전에 답변을 받았을 것입니다.하지만 물어보고 싶은 동안은 정확한 해결책을 찾지 못했습니다.추가 된 목록을 사용하여 np.where에서 유형 오류가 발생했습니다.

경과 된 시간을 사인파로 변환 한 다음 플롯하는 루프를 만들고 있습니다. 나는이 부분에 아무런 문제가 없지만, 나는 약간의 분석에 어려움을 겪고있다.

import time 
import numpy as np 

x = [] 
y = [] 

start = time.time() 

for times in range(100): 

    stop = time.time() 
    duration = stop-start 
    x.append(duration) 
    y.append(np.sin(duration)) 

    time.sleep(0.05) 

이 모두 잘 작동하고 필요에 따라 그래프를 생성

그러나 나는 다음 np.where 명령을 사용하여 찾고 있으며 오류 반환 :

print(y[np.where(y > 0)]) 

TypeError: unorderable types: list() > int()

은 무엇 저를 혼동하는 것은 무엇입니다 time.time()type(y[0])을 호출하면 numpy.float 정의를 제공하는 값을 반환합니다. 필자는 일부 기능을 잘못 호출하거나 내 목록 정의에 잘못된 것을 수행해야한다는 것을 이해합니다! 마치 간단한 int 행렬을 사용하는 것처럼 모든 것이 올바르게 작동합니다. 모든 좋은, 그래서 나는 TypeError 내 목록 정의에 잘못 갔어요 곳 난 그냥 궁금 해서요

a = np.arange(0,100,2) 
print(a[np.where(a > 80)]) 

[82 84 86 88 90 92 94 96 98]

.

미리 환호하십시오!

+0

'np.array (x)'를 사용하여'x'리스트를'numpy' 배열로 변환하려고 시도 했습니까? 같은 오류가 발생합니까? –

+0

그게 고칠 수있어, 많이 고마워. 그 변화와 그 기능이 어떻게 작동하는지를 나에게 설명해 주시겠습니까? 건배. – Wrothschild

+1

Numpy는 기본 연산자의 평등, 비교 등을 오버라이드합니다.이 경우'> '연산자를 호출하는 것은 [numpy.greater] (https://docs.scipy.org/doc/numpy-1.13.0/reference)를 호출하는 것과 같습니다. /generated/numpy.greater.html). –

답변

0

숫자 배열 y = np.array(y)으로 캐스팅 y 다음에 np.where(y[np.where(y > 0)])을 사용하면 원하는 결과를 얻을 수 있습니다.

+0

그건 대접, 고마워 많이 작동합니다. 당신이 그것을 촉진하기 위해 무엇이 바뀌 었는지 설명 할 수있는 기회? 건배. – Wrothschild

+0

문서 ([link] (https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.where.html))에 따르면'np.where()'는 array_like 조건을 요구합니다 목록을 허용하지 않습니다. – nanoPhD

+0

흥미 롭습니다. 고마워요. – Wrothschild