我有两个文件,一个文件在每一行(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数组索引。
谢谢您的帮助!
答案 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二维数组中的正确索引。