2011-11-21 3 views
0

지금 I가리스트 (100 개) 값이 1 100 따라서 경우에서리스트로 변환 할 값의 불균일 한 길이의 목록이 다음의 위치 (10)에있을 것이다리스트 [10]파이썬리스트 값 교차

이제 248 개의 값 목록이 있는데 이것에 대한 선 그래프를 만들고 x 축이 1-100 % 범위에 있도록하여 값이 위치 10에있는 값을 묻거나 교차 할 수 있습니다.

또는 또 다른 옵션은 길이가 248 (선 그래프)이고 특정 y 값을 반환하는 xaxis에서 2.48의 값을 요구할 수 있습니다. 그런 다음 xaxis 값으로 매회 2.48을 추가하여 100 회 반복합니다.

numpy 또는 matplotlib가 가능합니까? 나는 전체적인 설명이 필요 없다. 암호. 그러나 좋은 방향의 예 또는 충돌은 좋을 것입니다.

http://docs.scipy.org/doc/numpy/reference/generated/numpy.interp.html 제가 필요 무엇

XP = [1, 2, 3]

FP = 3, 2, 0]

np.interp (2.5, XP, FP)

1.0

답변

2

Easy! 그냥 값 플롯에서 X-위치를 생성 할 수 numpy.linspace를 사용 : 이제

vals=np.array(vals) 
sample=vals[np.round(np.linspace(0,len(vals)-1,100)).astype(int)] 

: 값 목록을 표본하기

import numpy as np 
import matplotlib.pyplot as plt 

vals=np.random.random(248) 
x=np.linspace(1,100,len(vals)) 

plt.plot(x,vals) 
plt.show() 

을, 당신은 "고급"인덱싱을 NumPy와 사용할 수 있습니다 "위치 10에서"값을 찾으려면 간단히 sample[10]을 얻으십시오.


numpy 배열은 파이썬 목록과 마찬가지로 0 인덱싱됩니다. 나는 당신이 1에서 100까지 인덱싱을 요청했다는 것을 알고있다. (그리고) 파이썬과 numpy의 나머지 작업은 0 인덱싱 규칙을 따라 가서 sample을 인덱싱 할 수있다. 0 1sample=np.r_[0,vals[np.round(np.linspace(0,len(vals)-1,100)).astype(int)]]

+0

. 이제 저는 그 가치가 1,2,3,4,5,6,7,8,9 ....에 무엇인지 알고 싶습니다. – Jasper

0

당신이 정말로 할 의도 무엇 슈어 아니지만, 파이썬은 일반적으로 이것에 대한 외부 모듈이 필요하지 않습니다

99 : 실제로 거의 그것을 않습니다

class NormalizedList(list): 
    def __getitem__(self, index): 
     length = len(self) 
     denorm_index = int ((index * length)/100.0 + 0.5) 
     return list.__getitem__(self, denorm_index) 


mylist = NormalizedList(range(248)) 

print mylist[50]