pandas scipy -interp 2d-值错误:在x.size = m且y.size = n的规则格网上,如果z.ndim == 2,则z的形状必须为(n,m)

w6mmgewl  于 2023-01-07  发布在  其他
关注(0)|答案(1)|浏览(194)

当我尝试运行scipy intrap2d函数时,我得到了一个关于矩形数据表的错误,我已经使用panda pivot_table得到了初始的x和y值,并且正在生成z数组。
ValueError:在x. size = m且y. size = n的规则格网上,如果z. ndim == 2,则z的形状必须为(n,m)
如何解决此问题?

qhhrdooz

qhhrdooz1#

scipy intrep2d init函数检查x,y和z的大小。如果表格是矩形网格,它检查z的形状是否等于(len(y),len(x))的形状。如果z的形状不符合x和y的长度,则抛出错误。

if rectangular_grid:
            if z.ndim == 2:
                if z.shape != (len(y), len(x)):
                    raise ValueError("When on a regular grid with x.size = m "
                                     "and y.size = n, if z.ndim == 2, then z "
                                     "must have shape (n, m)")

参考:https://gemfury.com/stream/python:scipy/0.15.0/content/interpolate/interpolate.py
此错误可通过校正x列和y列的位置交换来解决
如果使用Panda pivot_table

change 
df.pivot_table(values='z', index='x', columns='y')
TO
df.pivot_table(values='z', index='y', columns='x')

或者,您可以更新z数组并根据x和y长度排列它。

相关问题