1

いくつかの気象データをMySQLデータベースに取り込む必要があります。ファイルinputFile.csvは、コンマで区切られた値のリストです。241行と1行あたり481の値があります。各線は特定の緯度にマップされ、線内の各値の位置は特定の経度にマップされます。

同じ構造の2つの追加ファイルlat.csvlon.csvinputFile.csvこれらのファイルには、の値がマップされる座標が含まれています。

したがって、の値の緯度と経度を見つけるには、とinputFile.csv内の同じ行/位置(または行/列)の値を参照する必要がありますlat.csvlon.csv

inputFile.csvを使用lat.csvして翻訳したいのでlon.csv、出力ファイルに(からの)値、緯度経度のリストが含まれるようにします。inputFile.csv

これが小さな視覚的な例です:

    inputFile.csv
    3,5,1,4,5
    1,4,1,2,5
    5,7,3,8,0

    lat.csv
    22,31,51,21,52
    55,21,24,66,12
    11,23,12,55,55

    lon.csv
    12,35,12,52,11
    35,11,25,33,42
    62,53,45,25,54


    output:
    val lat lon
    3   22  12
    5   31  35
    1   51  12
    4   21  52
    5   52  11 
    1   55  35
    4   21  11
    1   24  25  
    2   66  33
    etc

python / numpyでこれを行うための最良の方法は何ですか?

4

2 に答える 2

2

必要な配列の合計サイズがわかっているので、事前に割り当てることができると思います。

a = np.empty((241*481,3))

これでデータを追加できます:

for i,fname in enumerate(('inputFile.csv','lat.csv','lon.csv')):
    with open(fname) as f:
        data = np.fromfile(f,sep=',')
        a[:,i] = data.ravel()

前もって要素の数がわからない場合は、代わりに 2 次元リスト (のリストnp.ndarrays)を生成できます。

alist = []
for fname in ('inputFile.csv','lat.csv','lon.csv'):
    with open(fname) as f:
        data = np.fromfile(f,sep=',')
        alist.append( data.ravel() )
a = np.array(alist).T
于 2012-10-22T15:15:12.240 に答える
2

numpy 関数のみ:

import numpy as np

inputFile = np.gentfromtxt('inputFile.csv',delimiter = ',')
inputFile.reshape(-1)
lat = np.gentfromtxt('lat.csv',delimiter = ',')
lat.reshape(-1)
lon = np.gentfromtxt('lon.csv',delimiter = ',')
lon.reshape(-1)

output = np.vstack( (inputFile,lat,lon) )
于 2012-10-22T15:23:13.517 に答える