【问题标题】:converting NumPy to float将 NumPy 转换为浮点数
【发布时间】:2020-05-14 23:47:51
【问题描述】:

我是 Python 新手,所以我还在学习。但是,我试图从包含风读数的文本文件中找到平均值、最小值和最大值。我已经让它工作了,但是,我需要将 NumPy 转换为浮动,我不确定我是如何做到的。

import numpy as np

def main():
    text_file = open("tall_filtrert.txt", "r")

    total = 0.0

    count = 0

    print("Press enter to start")

    for line in text_file:
        run_time = float(line)

        count += 1

        total += run_time

    text_file.close()

    x = np.loadtxt("tall_filtrert.txt")
    print("There are", count, "")
    print('Average:', np.average(x))
    print('Max:', np.amax(x))
    print('Min:', np.amin(x))

main()

代码很慢,但有 800k 读数。有关如何提高速度的任何建议都会有所帮助。

文本文件如下所示:

1.2056

1.3426

1.8632

等等。

【问题讨论】:

  • loadtxt 函数的默认 dtype 为 float。我没有得到您要转换为浮动的部分?
  • @KoralpCatalsakal 如果我理解正确,当 numpy 打印平均值、最大值和最小值时,它不是浮点数吗?我可能错了?
  • 在这种情况下,您可以使用astype() 函数。 np.amin(list).astype(float)
  • @KoralpCatalsakal 你能解释一下我需要把它放在代码中的什么地方吗?我是 numpy 和 python 的新手,如果听起来有点愚蠢,我很抱歉。

标签: python python-3.x numpy


【解决方案1】:

您可以使用

检查实例的类型(如变量)
y = 12.0
isinstance(y, float)

这类似于Check if a number is int or float

正如 @Florian H 提到的,如果您的文本文件仅包含一列数字(每行一个数字),loadtxt 读取的 numpy 数组将仅包含浮点数,因此您会好的。

【讨论】:

    【解决方案2】:

    您不能将 numpy 数组转换为浮点数(除非它只有一个值),因为正如其名称所说,它是一个数组。数组意味着类似于一系列浮点数。这基本上意味着您尝试将多个数字转换为一个数字。

    另一方面,当您使用@KoralpCatalsakal 提到的loadtxt 阅读它们时,值本身应该是浮动的。

    np.averagenp.maxnp.min 的返回值也应该是浮点数。

    速度问题:只读取一次文件。

    def main():
        x = np.loadtxt("tall_filtrert.txt")
        print("There are", len(x), "")
        print('Average:', np.average(x))
        print('Max:', np.max(x))
        print('Min:', np.min(x))
    
    main()
    

    如果你需要你的值的总和:

    total = np.sum(x)
    

    【讨论】:

    • 速度要好得多,所以,如果我理解这一点。 x = np.loadtxt("tall_filtrert.txt") 什么时候将其转换为浮点数?
    • @Ben 进入一个 numpy 数组。这基本上是一组花车。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-10
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 2019-10-31
    • 2014-12-24
    相关资源
    最近更新 更多