2017-07-10 7 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に何らかの変換を適用し、変換された配列に対してプロットしたいと思います。より効率的にそれを行うための1つの方法は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私の日を1000x簡単にしました! –

関連する問題