首页 > 解决方案 > 如何解决“x 和 y 必须具有相同的第一维,但形状为 (1,) 和 (360,)?”

问题描述

我收到此错误“x 和 y 必须具有相同的第一维,但具有形状 (1,) 和 (360,)”

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import datetime
datetime_object = datetime.datetime.now()
print(datetime_object)

def ReadData(sf):
  sdir="drive/My Drive/Colab Notebooks"
  sff="%s/%s"%(sdir ,sf)
  df = np.array(pd.read_csv(sff,header=None, sep = '\s+'))
  df1 = pd.DataFrame(df)
  return df1.values

ecg=ReadData("/dataecg.txt")

y = []
x0 = []

i = 0
for x in range(0, 360):
    y.append(ecg[x])
    #print(y[i])
    x0.append(i)
    i = i+1
plt.plot(x0, y)


T = 360
k = 40
dx = 1
a = np.empty(T)
b = np.empty(T)
y2 = np.empty(T)
sumy = 0

for i in range(0, T, 1):
    sumy = sumy + y[i]
a[0] = sumy/T
b[0] = 0

for n in range(1, k, 1):
    sumcos = 0
    sumsin = 0
    for i in range(1, T, 1):
        sumcos = sumcos + (y[i] * np.cos(2*np.pi/T*n*x0[i]) * dx)
        sumsin = sumsin + (y[i] * np.sin(2*np.pi/T*n*x0[i]) * dx)
    a[n] = (2/T) * sumcos
    #print(n)
    #print(a[n])
    b[n] = (2/T) * sumsin
    #print(b[n])

for i in range(0, 360, 1):
    y2[i] = a[0]
    for n in range(1, k, 1):
        y2[i] = y2[i] + (a[n] * np.cos(2*np.pi/T*n*x0[i]))+(b[n] * np.sin(2*np.pi/T*n*x0[i]))

plt.plot(x, y2)

plt.grid(True)
#plt.savefig("drive/My Drive/Colab Notebooks/numeric/test.png")
plt.show()

我得到这个错误:

> --------------------------------------------------------------------------- ValueError                                Traceback (most recent call
> last) <ipython-input-21-b14f3888f4b1> in <module>()
>      57         y2[i] = y2[i] + (a[n] * np.cos(2*np.pi/T*n*x0[i]))+(b[n] * np.sin(2*np.pi/T*n*x0[i]))
>      58 
> ---> 59 plt.plot(x, y2)
>      60 
>      61 plt.grid(True) 3 frames /usr/local/lib/python3.7/dist-packages/matplotlib/axes/_base.py in
> _plot_args(self, tup, kwargs)
>     340 
>     341         if x.shape[0] != y.shape[0]:
> --> 342             raise ValueError(f"x and y must have same first dimension, but "
>     343                              f"have shapes {x.shape} and {y.shape}")
>     344         if x.ndim > 2 or y.ndim > 2: ValueError: x and y must have same first dimension, but have shapes (1,) and (360,)

有人可以帮我解决这个问题吗?我还是python的新手,谢谢

标签: pythonnumpysignals

解决方案


推荐阅读