python - 使用 numpy 翻译网格化的 csv 文件

标签 python parsing numpy

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

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

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

我想使用 lat.csvlon.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/

相关文章:

python - 使用sklearn时Python出现内存错误

python - 如何用零替换缺失数据的值?

python - 在Python中使用正则表达式搜索CSV文件中的特定短语

python - 使用 lxml 提取所有元素事先未知的数据

r - 清理 R : parsing a complex string 中的数据

python - dlib人脸检测错误: Unsupported image type,必须是8位灰度或RGB图像

python - get 上的 Redis 通配符键

regex - 如何从第一个非字母字符开始的字符串中删除所有字符?

python - 为 itertools 重复一个 numpy 数组指定的次数

python - Numpy:多维数组的真值比较