【发布时间】: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)。len和sum是在第一维上运行的 Python 函数。如果您想要所有值的总和,请使用np.sum和np.size。或者按照答案中的建议,使用data=data.ravel()将数组展平为 1d。在numpy中,您需要跟踪数组形状,当有任何混淆时使用print(...shape)。 -
@hpaulj 哦,好吧!!太感谢了。这清楚了很多事情!
标签: python function numpy csv tuples