【问题标题】:x and y must have same first dimension, but have shapes (50,) and (10,)x 和 y 必须具有相同的第一维,但形状为 (50,) 和 (10,)
【发布时间】:2020-05-21 16:22:41
【问题描述】:

我想绘制一个包含 2 个数组的图表,但它不起作用。 输出说:

ValueError: x 和 y 必须具有相同的第一维,但形状为 (50,) 和 (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()

【问题讨论】:

  • 不清楚你的问题是什么。根据报错,你的x值有50个元素,而你的y值只有10个元素,所以不能一起绘制
  • 请不要发布代码、数据或 Tracebacks 的图像。将其复制并粘贴为文本,然后将其格式化为代码(选择它并输入ctrl-k
  • 我只是编辑了它,因为它确实没有为帖子或问题本身添加任何有意义的东西。
  • me pedía un número mínimo de letras!

标签: python matplotlib shapes diagram dimension


【解决方案1】:

正如 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)

【讨论】:

  • 没有干草问题! :D
猜你喜欢
  • 2020-10-04
  • 2020-05-02
  • 1970-01-01
  • 2021-07-31
  • 1970-01-01
  • 2022-01-09
  • 2018-12-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多