【问题标题】:Getting started with numpy or scipy? [closed]开始使用 numpy 或 scipy? [关闭]
【发布时间】:2012-10-12 16:54:59
【问题描述】:

我仔细阅读了numpyscipy 的描述,这些描述是由早期帖子中有用的贡献者推荐的。

由于我是 Python 初学者,请您帮助我:例如,我在文件夹 c:\\programming 中有一个文件 (stats1.txt);这个 .txt 文件有一列有 1000 个值;现在我想获得这些值的描述性统计数据(平均值、中值、最大值、最小值、标准差)。

如何开始使用numpyscipy 编写代码以在同一文件或新文本文件中执行结果?

【问题讨论】:

    标签: python numpy python-2.7 scipy


    【解决方案1】:

    这需要对python的工作原理有一些基本的了解,它是一种面向对象的语言。所以你基本上解析输入文件, 既然你说文件只有一列,你只需要将值转换为数字

    with open('stats1.txt') as f:
        lines=[float(i) for i in f.xreadlines()] 
    

    这将为您提供一个类似于您使用电子表格打开它时所看到的表格,请注意,它假定所有值都是数字,如果您混合了文本,则需要进行更多排序。然后你把它变成一个numpy数组

    nlines=numpy.array(lines)
    

    然后,要获取您的统计值,

    stdev=nlines.std()
    min_=nlines.min()
    max_=nlines.max()
    mean=nlines.mean()
    import collections
    mode=collections.Counter(nlines).most_common()[0]
    

    【讨论】:

    • 不需要readlinesnp.array([float(ln) for ln in f]) 会产生同样的效果。
    • 不要覆盖内置函数。特别是如果您稍后尝试使用它们。你可以使用 numpy.loadtxt()。如果您不使用 numpy.bincount(位置)、scipy.stats.mode(一般情况)或基于 numpy.histogram 的解决方案来查找最常见的元素,请考虑 collections.Counter
    • 对,应该是 min_,max_,没想到它们是内置的。我会更新答案。
    • 使用numpy时,不需要实现文件解析器。只需使用nlines = numpy.loadtxt('stats1.txt')
    • 很好,我从 numpy 中不知道这一点。
    猜你喜欢
    • 2013-02-26
    • 1970-01-01
    • 2017-05-25
    • 2010-09-08
    • 2012-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多