2017-07-10 29 views
0

基於下面的代碼,我試圖繪製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.') 

回答

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.') 
+0

這個工作萬無一失@阿爾維斯!謝謝!這是非常簡單的,我很欣賞作爲一個新的編碼器。 :D讓我的日子變得更輕鬆! –