2016-07-19 4 views
0

4 개의 2 차원 np 배열이 있습니다. 각 배열의 모양은 (203, 135)입니다. 이제 위의 모든 배열을 위도와 경도와 관련하여 하나의 배열로 결합하고 싶습니다.파이썬을 사용하여 여러 개의 2 차원 배열을 단일 배열로 결합/병합

나는 데이터

import pandas as pd 
import numpy as np 
import os 
import glob 
from pyhdf import SD 
import datetime 
import mpl_toolkits.basemap.pyproj as pyproj 

DATA = ({}) 
files = glob.glob('MOD04*') 
files.sort() 
for n, f in enumerate(files):  
    SDS_NAME='Deep_Blue_Aerosol_Optical_Depth_550_Land' 
    hdf=SD.SD(f) 
    lat = hdf.select('Latitude') 
    latitude = lat[:] 
    min_lat=latitude.min() 
    max_lat=latitude.max() 
    lon = hdf.select('Longitude') 
    longitude = lon[:] 
    min_lon=longitude.min() 
    max_lon=longitude.max() 
    sds=hdf.select(SDS_NAME) 
    data=sds.get() 

    p = pyproj.Proj(proj='utm', zone=45, ellps='WGS84') 
    x,y = p(longitude, latitude) 

    def set_element(elements, x, y, data): 
     # Set element with two coordinates. 
     elements[x + (y * 10)] = data 

    elements = [] 
    set_element(elements,x,y,data) 

을 읽을 수 아래의 코드를 사용했다하지만 난 오류가있어 : 하나 개의 요소 만 정수 배열은 인덱스로 변환 할 수

당신이 데이터를 찾을 수 있습니다

: https://drive.google.com/open?id=0B2rkXkOkG7ExMElPRDd5YkNEeDQ

요청한대로이 문제에 대한 장난감 데이터 세트를 만들었습니다. 내가 원하는 것은 4 개의 (a, b, c, d) 배열에서 하나의 단일 배열을 얻는 것이다. 그의 치수는 (406, 270)과 같아야합니다.

a = (np.random.rand(27405)).reshape(203,135) 
b = (np.random.rand(27405)).reshape(203,135) 
c = (np.random.rand(27405)).reshape(203,135) 
d = (np.random.rand(27405)).reshape(203,135) 
a_x = (np.random.uniform(10,145,27405)).reshape(203,135) 
a_y = (np.random.uniform(204,407,27405)).reshape(203,135) 
d_x = (np.random.uniform(150,280,27405)).reshape(203,135) 
d_y = (np.random.uniform(204,407,27405)).reshape(203,135) 
b_x = (np.random.uniform(150,280,27405)).reshape(203,135) 
b_y = (np.random.uniform(0,202,27405)).reshape(203,135) 
c_x = (np.random.uniform(10,145,27405)).reshape(203,135) 
c_y = (np.random.uniform(0,202,27405)).reshape(203,135) 

어떤 도움이 필요합니까?

+0

장난감 데이터 입력을 (링크를 게시하는 대신) 정의하고이 장난감 데이터 예제에 대해 달성하려는 출력을 정의하십시오. –

+1

또한 for 루프에서 elements = []를 반복적으로 설정하여 set_elements로 달성 한 이전 결과를 효과적으로 지움 –

+0

@NikolasRieble, Okey 장난감 데이터를 생성하고 게시합니다 – bikuser

답변

0

댓글이어야하지만 댓글 공간은 이러한 질문에 충분하지 않습니다. 그러므로 여기에 올리고 있습니다 :

출력 배열에 어떤 식 으로든 통합 될 4 개의 입력 배열 (a, b, c, d)가 있다고합니다. 이해되는 한, 이들 배열 중 두 개는 경도와 위도와 같은 위치 정보 (x, y)를 포함합니다. 여러 입력 배열을 결합 코드에서 유일한 라인은 여기에 있습니다 :

다음은 4 개 개의 입력 변수 나는 당신의 입력 배열로 가정 (요소, X, Y, 데이터) (A, B가
def set_element(elements, x, y, data): 
     # Set element with two coordinates. 
     elements[x + (y * 10)] = data 

,CD). 이 작업에서는 아직 요소를 결합하지 않지만 요소의 요소 (index : x + 10y)를 새 값 (data)으로 덮어 씁니다.

따라서 타겟 출력을 이해하지 못합니다.

는 내가 원하는 것은 이것이다 :

a = [[1,2]] 
b = [[3,4]] 
c = [[5,6]] 
d = [[7,8]] 

이것은 쉽게 말할 수있는 그런 쉬운 예가 될 것이다 : 나는 장난감 데이터를 요청 때

, 나는 마음에 이런 일을했다 :

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

그러면 답변을 찾을 수 있도록 도와 드리겠습니다.

수학적으로 표기된 작업 (x = a + b * c + d와 같은)이나 장난감 데이터에 대해 더 많은 정보를 제공하여 요청한 기능을 추론 할 수 있도록하십시오.

+0

제 질문을 명확히하고 수정 해 주셔서 감사합니다. 정의가 잘못되어있는 것을 이해했습니다. 성명서 ... – bikuser