JSON은 내부에 단일 객체가있는 배열이므로 읽을 때 사전이있는 목록을 얻습니다. 아래와 같이 목록에서 항목 0에 액세스하여 사전에 액세스 할 수 있습니다.
json1_data = json.loads(json1_str)[0]
이제 예상 한대로 데이터 포인트에 저장된 데이터에 액세스 할 수 있습니다 .
datapoints = json1_data['datapoints']
누군가 물릴 수 있다면 한 가지 더 질문이 있습니다.이 데이터 포인트의 첫 번째 요소의 평균을 구하려고합니다 (예 : datapoints [0] [0]). 그것들을 나열하기 위해, 나는 datapoints [0 : 5] [0]을 시도했지만 첫 번째 요소 만 포함하는 처음 5 개의 datapoint를 얻는 것이 아니라 두 요소가있는 첫 번째 datapoint입니다. 이 방법이 있습니까?
datapoints[0:5][0]
당신이 기대하는 것을하지 않습니다. datapoints[0:5]
처음 5 개 요소 만 포함하는 새 목록 슬라이스를 반환 한 다음 [0]
끝에 추가 하면 결과 목록 슬라이스에서 첫 번째 요소 만 가져옵니다 . 원하는 결과를 얻기 위해 사용해야하는 것은 목록 이해입니다 .
[p[0] for p in datapoints[0:5]]
평균을 계산하는 간단한 방법은 다음과 같습니다.
sum(p[0] for p in datapoints[0:5])/5. # Result is 35.8
NumPy를 기꺼이 설치하려면 훨씬 쉽습니다.
import numpy
json1_file = open('json1')
json1_str = json1_file.read()
json1_data = json.loads(json1_str)[0]
datapoints = numpy.array(json1_data['datapoints'])
avg = datapoints[0:5,0].mean()
# avg is now 35.8
,
NumPy의 배열에 슬라이싱 구문과 함께 연산자를 사용하면 원래 목록 슬라이스에서 예상했던 동작이 있습니다.