根据空间数据创建2D数组

时间:2020-08-31 19:56:43

标签: python arrays python-3.x pandas numpy

我有两个文件,一个文件在每一行(x,y,z)上都有空间数据;每一行都有字段值。空间数据文件中的每一行都与另一个字段值文件中的行相对应。

空间数据:

(-2 2 0.1)
(-2 1.92708 0.1)
(-2 1.85417 0.1)
...
(4.92784 1.92708 0.1)
(5 1.85417 0.1)
... 
etc

字段值数据:

4.35
8.90
5.6
44.4
3.4 
.. etc

我想以此创建2D数组。 我的x数据:我从-2-> 5均匀间隔了98个点 我的数据:我从-1.5-> 2

均匀间隔49点

我想要一个与空间位置相对应的大小为98x49的字段值数据的二维矩阵。

问题是,我的数据不整齐,所以我需要将空间(x,y)映射为其值。然后,我需要给它适当的2D数组索引。

谢谢您的帮助!

1 个答案:

答案 0 :(得分:1)

假设您有一个空间数据数组coords,其中每一行都给出一个数据点的(x,y,z)坐标,并在点data_vals处给出了另一个字段值数组,我会做类似的事情:

# create empty zeros array to be filled with the data vals 
output = np.zeros((98, 49))

# evenly spaced in x and y, so determine the size of the step along each dimension
# there are 97 steps between -2 and 5 according to your question  
XstepSize = (5 - -2) / 97 
YstepSize = (2 - -1.5) / 48 

# loop for every ROW in your data
for i in range(98): 
      # the loop variable is the row    
      # index of the coordinates 
      # array (every row 
      # corresponds to a data 
      # value) 
      
      # determine the x index
      Xval = coords[i,0] 

      # since your data is evenly spaced in x and y direction
      Xidx = int((Xval - xmin) / XstepSize)
        
      # determine the y index 
      Yval = coords[i,1] 
      Yidx = int((Yval - Ymin) / YstepSize)

      # fill your output with the
      # data at the desired index 
      output[xidx, yidx] = data_vals[i]

此方法获取数据点的连续(x,y)坐标,并将其映射到data_vals二维数组中的正确索引。