Python 将二维numpy数组转换为数据透视表
我有一个2D numpy数组,表示坐标网格上的深度Python 将二维numpy数组转换为数据透视表,python,arrays,pandas,numpy,pivot-table,Python,Arrays,Pandas,Numpy,Pivot Table,我有一个2D numpy数组,表示坐标网格上的深度 z = np.array([[100, 101, 102, 103], [101, 102, 103, 104], [102, 103, 104, 105], [103, 104, 105, 106], [104, 105, 106, 107]]) x = np.array([10, 11, 12, 13]) y = np.arra
z = np.array([[100, 101, 102, 103],
[101, 102, 103, 104],
[102, 103, 104, 105],
[103, 104, 105, 106],
[104, 105, 106, 107]])
x = np.array([10, 11, 12, 13])
y = np.array([20, 21, 22, 23, 24])
我还有一个列出垂直坐标的1D numpy数组和另一个列出水平坐标的1D numpy数组
z = np.array([[100, 101, 102, 103],
[101, 102, 103, 104],
[102, 103, 104, 105],
[103, 104, 105, 106],
[104, 105, 106, 107]])
x = np.array([10, 11, 12, 13])
y = np.array([20, 21, 22, 23, 24])
在某些情况下,该数据作为“x y z”数据列表提供,例如:
10 20 100
10 21 101
10 22 102
10 23 103
10 24 104
11 20 101
11 21 102
...
12 23 105
12 24 106
13 20 103
13 21 104
13 22 105
13 23 106
13 24 107
在这种情况下,创建数据透视表非常简单
data = pd.read_csv(file, header=None, names=['x', 'y', 'z'], delim_whitespace=True)
pvt = data.pivot_table(values='z', index='y', columns='x', fill_value=-100000)
如何从三个数组中的数据开始创建具有相同标签、格式等的透视表?我想我已经找到了一种使用numpy数组函数以正确格式获取数据的方法。这是一个正确的答案,但我希望有一个更优雅的方式来处理熊猫 由于我已经可以从
read\u csv()
返回的数据帧透视,因此最简单的选择是以与读取数据帧相同的格式获取数据
zf = z.flatten()
xr = np.repeat(x, y.size)
yt = np.tile(y, x.size)
d = np.stack((xr, yt, zf), axis=-1)
data = pd.DataFrame(data=d, columns=['x', 'y', 'z'])
pvt = data.pivot_table(values='z', index='y', columns='x')
怎么样
pd.DataFrame(z, index=y, columns=x)
?
在我看来,您基本上需要一个数据帧,只需要使用一个pivot_表,因为这样更容易