Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从Meshgrid重塑数据帧_Python_Numpy_Pandas - Fatal编程技术网

Python 从Meshgrid重塑数据帧

Python 从Meshgrid重塑数据帧,python,numpy,pandas,Python,Numpy,Pandas,如果我按照如下方式构造一个数据帧: import numpy as np import pandas as pd x = np.arange(-5.01, 5.01, 0.25) y = np.arange(-5.01, 5.01, 0.25) xx, yy = np.meshgrid(x, y) z = np.sin(xx**2+yy**2) df = pd.DataFrame(z, index=x, columns=y) 我现在有一个41x41数据帧,其中每个值对应一个x,y对。我想重塑

如果我按照如下方式构造一个数据帧:

import numpy as np
import pandas as pd

x = np.arange(-5.01, 5.01, 0.25)
y = np.arange(-5.01, 5.01, 0.25)
xx, yy = np.meshgrid(x, y)
z = np.sin(xx**2+yy**2)
df = pd.DataFrame(z, index=x, columns=y)
我现在有一个41x41数据帧,其中每个值对应一个x,y对。我想重塑这个数据帧,这样我就有3列(X,Y,Z)和1681行,新的任意索引范围为0-1680


作为补充说明,如果我的数据帧已经是所需的格式,我相信这与撤消df.pivot('X','Y','Z')是一样的,但我不确定如何实现这一点。

为什么不在numpy中完成这一切

>>> data = np.array([xx, yy, z]).reshape(3, -1).T
>>> data
array([[-5.01      , -5.01      , -0.0652361 ],
       [-4.76      , -5.01      , -0.59221922],
       [-4.51      , -5.01      ,  0.9936343 ], ...

unstack
将撤消
pivot

df.unstack().reset_index().rename(列={'level_0':'x','level_1':'y',0:'z'})
x y z 0 -5.01 -5.01 -0.065236 1 -5.01 -4.76 -0.592219 2 -5.01 -4.51 0.993634
您可以将多维阵列重塑为一维阵列并创建dict,然后将其轻松转换为有序的数据帧:

import numpy as np
import pandas as pd

x = np.arange(-5.01, 5.01, 0.25)
y = np.arange(-5.01, 5.01, 0.25)
xx, yy = np.meshgrid(x, y)
z = np.sin(xx**2+yy**2)
NT = np.product(xx.shape)

data = {
    "x": np.reshape(xx,NT),
    "y": np.reshape(yy,NT),
    "z": np.reshape(zz,NT)
}
df = pd.DataFrame(data=data)

df

将输出:

    x   y   z
0   -5.01   -5.01   -0.065236
1   -4.76   -5.01   -0.592219
2   -4.51   -5.01   0.993634
3   -4.26   -5.01   -0.670288
4   -4.01   -5.01   -0.333011
... ... ... ...
1676    3.99    4.99    0.020503
1677    4.24    4.99    -0.893283
1678    4.49    4.99    0.880967
1679    4.74    4.99    -0.241402
1680    4.99    4.99    -0.448675
1681 rows × 3 columns

做一个df.unstack()测试,看看这是否能满足你的需要。这是另一个问题的正确答案。问题更改或答案不应被接受(答案很好,但不涉及数据帧点)
    x   y   z
0   -5.01   -5.01   -0.065236
1   -4.76   -5.01   -0.592219
2   -4.51   -5.01   0.993634
3   -4.26   -5.01   -0.670288
4   -4.01   -5.01   -0.333011
... ... ... ...
1676    3.99    4.99    0.020503
1677    4.24    4.99    -0.893283
1678    4.49    4.99    0.880967
1679    4.74    4.99    -0.241402
1680    4.99    4.99    -0.448675
1681 rows × 3 columns