绘图时如何解决数组尺寸误差?

时间:2017-07-10 16:59:25

标签: python arrays plot floating-point dimensions

根据下面的代码,我试图绘制array_frequency_a与power_a的关系,但收到此错误:

   ValueError: x and y must have same first dimension, but have shapes (201,) and (1,)

我知道这意味着我的阵列大小不同,但是我如何更改它们或以不同的方式创建power_a以便它们可以相互绘制?谢谢!

frequency_a=[]
dB_a=[]

a = csv.reader(open('Air.csv'))

for row in itertools.islice(a, 18, 219):
       frequency_a.append(float(row[0]))
       dB_a.append(float(row[1]))
       #print(frequency_a)
array_frequency_a = np.array(frequency_a)       
array_dB_a = np.array(dB_a)

#perform operation on data
for i in range(201):
    power_a = np.array(10**(array_dB_a[i]/10))
    print(power_a)

fig, ax = plt.subplots()
ax.plot(array_frequency_a/1e9, power_a, 'b', label='1in air.')

1 个答案:

答案 0 :(得分:0)

我认为你想对array_dB_a应用一些变换,然后对变换后的数组进行绘图。更有效地实现它的一种方法是使用np.vectorize

将函数映射到数组
power_f = lambda t: 10 ** (t / 10)
vfunc = np.vectorize(power_f)
new_array_dB_a = vfunc(array_dB_a)

然后,新数组的大小与array_frequency_a相同:

fig, ax = plt.subplots()
ax.plot(array_frequency_a/1e9, new_array_dB_a, 'b', label='1in air.')