我需要把一些气象数据放到MySQL数据库中。文件inputFile.csv是以逗号分隔的值列表.每一行有241行,481条。每一行映射到一定的纬度,每个值在直线中的位置映射到一定的经度。
还有两个结构相同的附加文件,lat.csv和lon.csv。这些文件包含inputFile.csv中的值映射到的坐标。
因此,要在inputFile.csv中找到值的纬度和经度,我们需要引用lat.csv和lon.csv中同一行/位置(或行/列)的值。
我希望使用lat.csv和lon.csv来翻译lat.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中,最好的方法是什么?
发布于 2012-10-22 15:15:12
我想,既然您知道所需数组的总大小,就可以预先分配它:
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()如果不预先知道元素的数量,则可以生成一个二维列表(一个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-22 15:23:13
只具有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) )https://stackoverflow.com/questions/13014297
复制相似问题