绘图时如何解决数组维数错误?
How to solve array dimension error when plotting?
根据下面的代码,我试图绘制 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.')
我认为您想对 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.')
根据下面的代码,我试图绘制 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.')
我认为您想对 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.')