假设文件中的x和y值直接对应于索引(就像在您的示例中那样),您可以执行与此类似的操作:
import numpy as np
x = [0, 0, 1, 1, 2, 2]
y = [1, 2, 0, 1, 1, 2]
z = [14, 17, 15, 16, 18, 13]
z_array = np.nan * np.empty((3,3))
z_array[y, x] = z
print z_array
产量:
[[ nan 15. nan]
[ 14. 16. 18.]
[ 17. nan 13.]]
对于大型数组,这将比坐标上的显式循环快得多.
处理不均匀的x&输入
如果你经常采样x& y点,然后您可以通过减去网格的“角”(即x0和y0),除以单元格间距,并将其转换为整数,将它们转换为网格索引.然后,您可以使用上述方法或任何其他答案.
作为一般例子:
i = ((y - y0) / dy).astype(int)
j = ((x - x0) / dx).astype(int)
grid[i,j] = z
但是,如果您的数据没有规则间隔,则可以使用一些技巧.
假设我们有以下数据:
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(1977)
x, y, z = np.random.random((3, 10))
fig, ax = plt.subplots()
scat = ax.scatter(