2017-11-30 15 views
2

값 목록이 있으며 해당 목록의 로그로 변환하거나 목록 로그를 함수에 전달하려고합니다. 나는 R에 더 익숙하다. 그리고 당신은 보통 주위에 어떤 것을 던질 수있다. 나는이 파이썬에서 시도 할 때 나는 오류를 얻을 :Python - 목록을 로그 (목록)로 변환하는 방법

TypeError: must be real number, not list 

목록은 다음과 같습니다 : 나는 로그를 취하려고 할 경우

pressures[:5] 
Out[11]: [1009.58, 1009.58, 1009.55, 1009.58, 1009.65] 

그것은 정말 문제, 나도 같은 오류가 발생하지 않습니다. 데이터 파싱 동안

plt.plot(timestamps, log(pressures)) 
plt.xlabel('Timestamps') 
plt.ylabel('Air Pressure') 
plt.show() 

: 함수를 것 말이다

pressures = log([record['air_pressure'] for record in data]) 
+0

'numpy.log' 목록의 각 요소에 대해 작업을 수행하고 NumPy와를 반환합니다 정렬. –

+0

또는 옵션 인 대수 눈금의 실제 압력을보고 싶다면 ['plt.semilogy'] (https://matplotlib.org/devdocs/api/_as_gen/matplotlib.pyplot.semilogy.html) –

답변

3

log()은 단일 번호로만 사용할 수 있습니다. 그러므로 반복문을 반복 작성하여 각 번호에 log()을 적용해야합니다.

다행히도 약간의 수정을 통해 트릭을 수행하는 루프를 이미 작성했습니다. 대신 :

pressures = log([record['air_pressure'] for record in data]) 

쓰기 :

pressures = [log(record['air_pressure']) for record in data] 
+1

'압력'리스트가 있으면 이미 생성 된'log'를 원하고'log()'가 완전한 연산 인 경우, 나는'pressures_log = map (log, pressure)'의 부분입니다. 그러나 위와 동일합니다. – TemporalWolf

0

당신이 로그를하고 싶어하고 당신이 그것을 위해 수학 lib 디렉토리를 사용할 수있는 정수의 목록이있는 경우.

import math 

my_data = [1,2,3,4,5,6,7,8,9] 

log_my_data = [math.log(x) for x in my_data] 

print(log_my_data) 
1

이 문제를 처리하는 데는 몇 가지 방법이 있습니다. 파이썬에는 math 모듈에 기본 기능이 내장되어 있습니다. 하나는 log입니다. 그것은 플로트 매개 변수로 플로트 또는 int를 받아 출력 :

> data = [1, 2, 3] 
> [log(x) for x in data] 
[0.0, 0.6931471805599453, 1.0986122886681098] 
:

> from math import log 
> log(20) 
2.995732273553991 

이 기능 목록을 처리하기를, 목록에있는 모든 항목을 호출해야하는 것

한편, 관련 라이브러리를 이미 사용하고있는 것처럼 보입니다. numpy은 한 번에 전체 목록을 처리 할 수 ​​있습니다. 당신이 numpy을 사용하고 다시 목록을 얻고 싶다면

> import numpy as np 
> np.log([1, 2, 3]) 
array([ 0.  , 0.69314718, 1.09861229]) # Notice this is a numpy array 

대신이 작업을 수행 할 수 있습니다 :

> list(np.log([1, 2, 3])) 
[0.0, 0.69314718055994529, 1.0986122886681098]