【问题标题】:python function returning unnecessary tuple valuespython函数返回不必要的元组值
【发布时间】:2021-03-31 13:37:50
【问题描述】:

我正在尝试编写一个读取 csv 文件并将其转换为 numpy 数组的 python 函数。然后我必须计算它的平均值和中位数。这是问题:

这是我写的代码

def calc_stats(csvF):
  data = np.loadtxt(csvF, delimiter=',')
  meanF = sum(data)/len(data)
  
  data.sort()
  if len(data)%2 == 0:
    m1 = data[len(data)//2]
    m2 = data[len(data)//2 - 1]
    medianF = (m1+m2)/2
  else:
    medianF = data[len(data)//2]
  
  returnVal = (meanF, medianF)
  
  return returnVal

您可以在问题中看到我们期望的输出,但我得到的输出是这样的:

array([  9.65666667,  15.89      ,  13.43666667,   5.4       ]), array([  1.27,   3.99,  11.73,  19.66]))

我不明白为什么我会得到这些额外的价值。我似乎无法弄清楚我做错了什么。请帮忙。

【问题讨论】:

  • data 加载时是一个二维 numpy 数组,形状 (3,4)。 lensum 是在第一维上运行的 Python 函数。如果您想要所有值的总和,请使用np.sumnp.size。或者按照答案中的建议,使用data=data.ravel() 将数组展平为 1d。在numpy 中,您需要跟踪数组形状,当有任何混淆时使用print(...shape)。
  • @hpaulj 哦,好吧!!太感谢了。这清楚了很多事情!

标签: python function numpy csv tuples


【解决方案1】:

这些值是您未对所有数据求和的每一列的平均值和中位数 您必须重塑(将数组展平为列表)您的数据

data = np.loadtxt(csvF, delimiter=',')
data = data.reshape(-1)
meanF = sum(data) / len(data)

【讨论】:

  • 我该如何解决这个问题?我需要对所有值求和
猜你喜欢
  • 2019-12-15
  • 2017-04-07
  • 1970-01-01
  • 1970-01-01
  • 2014-08-22
  • 1970-01-01
  • 1970-01-01
  • 2017-03-05
  • 1970-01-01
相关资源
最近更新 更多