我正试图想出一种转换XYZ数据的方法......
X Y Data
1 11 101
1 12 102
1 13 103
1 14 104
1 15 105
2 11 101
2 12 102
2 13 103
2 14 104
2 15 105
3 11 101
3 12 102
3 13 103
3 14 104
3 15 105
4 11 101
4 12 102
4 13 103
4 14 104
5 15 105
5 11 101
5 12 102
5 13 103
5 14 104
5 15 105
看起来像这样的网格格式......
NAN 1 2 3 4 5
11 101 102 103 104 105
12 101 102 103 104 105
13 101 102 103 104 105
14 101 102 103 104 105
15 101 102 103 104 105
我最初尝试使用numpy模块,感觉就像数组操作的正确路径,但我似乎无法找出解决方案。任何想法或帮助指出我正确的方向是值得赞赏的。
答案 0 :(得分:0)
您可以使用np.unique()
获取X和Y的条目,如下所示:
import numpy as np
X = np.array([1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5])
Y = np.array([11, 12, 13, 14, 15, 11, 12, 13, 14, 15, 11, 12, 13, 14, 15, 11, 12, 13, 14, 15, 11, 12, 13, 14, 15])
Data = np.array([101, 102, 103, 104, 105] * 5)
res = Data.reshape((5, 5))
xvals = np.insert(np.unique(X), 0, 0)
yvals = np.array([np.unique(Y)]).T
print(np.vstack(([xvals], np.hstack((yvals, res)))))
请注意,我将0
代替NaN
,因为NaN
仅支持numpy
中的浮点数(请参阅here)。如果你真的想要NaN
,我建议你使用float数组。否则,您可以始终将其置于某个永远不会发生的值(例如-1
,如果您正在使用纯正数据)。或者它甚至不会影响该领域的内容。