我需要将一些气象数据输入到 MySQL 数据库中。
文件 inputFile.csv
是一个以逗号分隔的值列表。有 241 行,每行 481 个值。
每条线映射到特定的纬度,线内每个值的位置映射到特定的经度。
还有两个具有相同结构的附加文件,lat.csv
和 lon.csv
。这些文件包含 inputFile.csv
中的值映射到的坐标。
因此,要在 inputFile.csv
中查找值的纬度和经度,我们需要引用 lat 中同一行/位置(或行/列)的值。 csv
和 lon.csv
我想使用 lat.csv
和 lon.csv
翻译 inputFile.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 中执行此操作的最佳方法是什么?
最佳答案
我想既然你知道你想要的数组的总大小,你就可以预先分配它:
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
关于python - 使用 numpy 翻译网格化的 csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13014297/