首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用numpy转换带有网格的csv文件

用numpy转换带有网格的csv文件
EN

Stack Overflow用户
提问于 2012-10-22 15:08:18
回答 2查看 125关注 0票数 1

我需要把一些气象数据放到MySQL数据库中。文件inputFile.csv是以逗号分隔的值列表.每一行有241行,481条。每一行映射到一定的纬度,每个值在直线中的位置映射到一定的经度。

还有两个结构相同的附加文件,lat.csvlon.csv。这些文件包含inputFile.csv中的值映射到的坐标。

因此,要在inputFile.csv中找到值的纬度和经度,我们需要引用lat.csvlon.csv中同一行/位置(或行/列)的值。

我希望使用lat.csvlon.csv来翻译lat.csv,以便输出文件包含一个值列表(来自inputFile.csv)、纬度和经度。

下面是一个小型的可视化示例:

代码语言:javascript
复制
    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中,最好的方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-22 15:15:12

我想,既然您知道所需数组的总大小,就可以预先分配它:

代码语言:javascript
复制
a = np.empty((241*481,3))

现在您可以添加数据:

代码语言:javascript
复制
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列表):

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2012-10-22 15:23:13

只具有numpy函数:

代码语言:javascript
复制
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) )
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13014297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档