Python 2.7 获得';ValueError:x和y必须是长度相同的1D数组';当它们实际上是长度相同的一维数组时

Python 2.7 获得';ValueError:x和y必须是长度相同的1D数组';当它们实际上是长度相同的一维数组时,python-2.7,pandas,numpy,matplotlib,contourf,Python 2.7,Pandas,Numpy,Matplotlib,Contourf,我有这个数据框: key variable value 0 0.25 -0.2 606623.455859 1 0.27 -0.2 621462.029200 2 0.30 -0.2 640299.078053 3 0.33 -0.2 653686.910706 4 0.35 -0.2 659278.593742 5 0.37 -0.2 665684.466383 6 0.40

我有这个数据框:

    key variable    value
0   0.25    -0.2    606623.455859
1   0.27    -0.2    621462.029200
2   0.30    -0.2    640299.078053
3   0.33    -0.2    653686.910706
4   0.35    -0.2    659278.593742
5   0.37    -0.2    665684.466383
6   0.40    -0.2    671975.695814
7   0.25    0   530091.733402
8   0.27    0   542501.852937
9   0.30    0   557799.179433
10  0.33    0   571140.149887
11  0.35    0   575117.783803
12  0.37    0   582709.048163
13  0.40    0   588168.965913
14  0.25    0.2 466275.721535
15  0.27    0.2 478678.452615
16  0.30    0.2 492749.041489
17  0.33    0.2 500792.917910
18  0.35    0.2 503620.638204
19  0.37    0.2 507884.996510
20  0.40    0.2 512504.976664
21  0.25    0.5 351579.595889
22  0.27    0.5 359555.855803
23  0.30    0.5 368924.362358
24  0.33    0.5 375069.238800
25  0.35    0.5 377847.414729
26  0.37    0.5 381146.573247
27  0.40    0.5 383836.933547
我正试图用这个数据框和以下代码绘制等高线图:

x = df['key'].values
y = df['variable'].values
z = df['value'].values
plt.tricontourf(x, y, z, colors='k')
我不断地发现这个错误:

ValueError:x和y必须是长度相同的1D数组

但每当我检查x和y的len、.size、.shape和.ndim时,它们都是相同长度的一维数组。有人知道我为什么会犯这个错误吗


x、 形状返回(28L,)和y。形状返回(28L,)也是

好的,我找到了一种方法让它工作。我真的不知道为什么它不能按原来的方式工作,因为我正在输入tricontourf 1D数组,但基本上我将数据包装在一个list()函数中,以确保它是1D数组。这使它起了作用。代码如下:

x = df_2020_pivot['key'].values
y = df_2020_pivot['variable'].values
z = df_2020_pivot['value'].values
plt.tricontourf(list(x), list(y), list(z))

plt.show()

好的,我找到了一个方法让它工作。我真的不知道为什么它不能按原来的方式工作,因为我正在输入tricontourf 1D数组,但基本上我将数据包装在一个list()函数中,以确保它是1D数组。这使它起了作用。代码如下:

x = df_2020_pivot['key'].values
y = df_2020_pivot['variable'].values
z = df_2020_pivot['value'].values
plt.tricontourf(list(x), list(y), list(z))

plt.show()

我也遇到了同样的问题。我传入了两个长度相同的numpy数组,得到了“必须是长度相同的1D数组”错误。查看类型(数组),我传入的数组是numpy.ndarray。我使用array.tolist()将它们转换为简单(1D)列表,这为我消除了错误。如上所述,在list()函数中换行也可以

x = df['key'].values.tolist()
y = df['variable'].values.tolist()
z = df['value'].values
plt.tricontourf(x, y, z, colors='k')

我也遇到了同样的问题。我传入了两个长度相同的numpy数组,得到了“必须是长度相同的1D数组”错误。查看类型(数组),我传入的数组是numpy.ndarray。我使用array.tolist()将它们转换为简单(1D)列表,这为我消除了错误。如上所述,在list()函数中换行也可以

x = df['key'].values.tolist()
y = df['variable'].values.tolist()
z = df['value'].values
plt.tricontourf(x, y, z, colors='k')

准确显示
x.shape
返回的内容。我无法复制此内容。当我读入数据并删除
colors=“k”
(因为这没有多大意义)时,我得到了。我删除了colors=“k”,但它仍然不适用于我。你有没有在@ImportanceOfBeingErnest上做过其他的修改?我需要以某种方式读入数据。您的代码中缺少该步骤。请准确显示
x.shape
返回的内容。我无法复制此内容。当我读入数据并删除
colors=“k”
(因为这没有多大意义)时,我得到了。我删除了colors=“k”,但它仍然不适用于我。你有没有在@ImportanceOfBeingErnest上做过其他的修改?我需要以某种方式读入数据。代码中缺少该步骤。