x 和 y 必须具有相同的第一维,但形状为 (50,) 和 (10,)
x and y must have same first dimension, but have shapes (50,) and (10,)
我想绘制一个包含 2 个数组的图表,但它不起作用。
输出说:
ValueError: x and y must have same first dimension, but have shapes (50,) and (10,)
非常感谢!!!
import numpy as np
import matplotlib.pyplot as plt
p = float(input("Introduzca probabilidad de error de bit: "))
while p < 0 or p > 1:
p = float(input("Introduzca probabilidad de error de bit: "))
n = int(input("Introduzca número de bits: "))
while n < 0:
n = int(input("Introduzca número de bits: "))
q = 1-p
pexito = q**n
intentos = 1/pexito
print()
print("El número medio de intentos es:",intentos)
print()
print("La probabilidad de transmitir correctamente",n,"bits es:",pexito)
listapmf = []
listacdf = []
for i in range(n):
pmf = (p**(n-1))*q
listapmf.append(pmf)
for j in range(n):
cdf = 1-(p**n)
listacdf.append(cdf)
arraycdf = np.array(listacdf)
arraypmf = np.array(listapmf)
x1 = np.linspace(0.0, n)
x2 = np.linspace(0.0, n)
plt.subplot(2, 1, 2)
plt.plot(x1, arraypmf, '.-')
plt.title('Intentos de transmisión en base a una probabilidad de error de bit')
plt.ylabel('PMF')
plt.subplot(2, 1, 1)
plt.plot(x2, arraycdf, '.-')
plt.xlabel('Intentos')
plt.ylabel('CDF')
plt.show()
如 G.Anderson 所述,问题是您试图用只有 10 个 x 轴值绘制 50 个 x 轴值。当您定义 x1
和 x2
时,问题就开始了。 np.linspace()
的默认值是将传递的值拆分为 50 个值。我不确定你在期待什么,但也许这会奏效? (在功能上它确实 100% 有效,但不确定它是否是您打算使用的逻辑)
错误:
x1 = np.linspace(0.0, n) <-- Split values between 0 and n in 50 values
x2 = np.linspace(0.0, n) <-- Same
更改为:
x1 = np.linspace(0.0, 1, num = n)
x2 = np.linspace(0.0, 1, num = n)
我想绘制一个包含 2 个数组的图表,但它不起作用。 输出说:
ValueError: x and y must have same first dimension, but have shapes (50,) and (10,)
非常感谢!!!
import numpy as np
import matplotlib.pyplot as plt
p = float(input("Introduzca probabilidad de error de bit: "))
while p < 0 or p > 1:
p = float(input("Introduzca probabilidad de error de bit: "))
n = int(input("Introduzca número de bits: "))
while n < 0:
n = int(input("Introduzca número de bits: "))
q = 1-p
pexito = q**n
intentos = 1/pexito
print()
print("El número medio de intentos es:",intentos)
print()
print("La probabilidad de transmitir correctamente",n,"bits es:",pexito)
listapmf = []
listacdf = []
for i in range(n):
pmf = (p**(n-1))*q
listapmf.append(pmf)
for j in range(n):
cdf = 1-(p**n)
listacdf.append(cdf)
arraycdf = np.array(listacdf)
arraypmf = np.array(listapmf)
x1 = np.linspace(0.0, n)
x2 = np.linspace(0.0, n)
plt.subplot(2, 1, 2)
plt.plot(x1, arraypmf, '.-')
plt.title('Intentos de transmisión en base a una probabilidad de error de bit')
plt.ylabel('PMF')
plt.subplot(2, 1, 1)
plt.plot(x2, arraycdf, '.-')
plt.xlabel('Intentos')
plt.ylabel('CDF')
plt.show()
如 G.Anderson 所述,问题是您试图用只有 10 个 x 轴值绘制 50 个 x 轴值。当您定义 x1
和 x2
时,问题就开始了。 np.linspace()
的默认值是将传递的值拆分为 50 个值。我不确定你在期待什么,但也许这会奏效? (在功能上它确实 100% 有效,但不确定它是否是您打算使用的逻辑)
错误:
x1 = np.linspace(0.0, n) <-- Split values between 0 and n in 50 values
x2 = np.linspace(0.0, n) <-- Same
更改为:
x1 = np.linspace(0.0, 1, num = n)
x2 = np.linspace(0.0, 1, num = n)