x和y必须具有相同的第一维度,但具有形状(50)和(10)

2024-09-26 22:50:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用两个数组绘制一个图表,但它不起作用。 输出显示:

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()

Tags: inputnpbitdeplterrorbitsprint
1条回答
网友
1楼 · 发布于 2024-09-26 22:50:08

正如G.Anderson所说,问题是您试图用10个x轴值绘制50个x轴值。当您定义x1x2时,问题就开始了。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)

相关问题 更多 >

    热门问题