将NumPy转换为float

2024-09-30 18:13:27 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

等等


Tags: runtexttxtmaincountnplinefloat
2条回答

您可以使用

y = 12.0
isinstance(y, float)

这是沿着Check if a number is int or float的路线进行的

正如@Florian H所提到的,如果文本文件只包含一列数字(每行一个数字),那么loadtxt读取的numpy数组将只包含浮点数,这样就可以了

不能将numpy数组转换为float(除非它只有一个值),因为顾名思义它是一个数组。数组的意思类似于一系列浮点数。这基本上意味着你要把多个数字转换成一个数字

另一方面的值本身应该是float-allready,当您使用loadtxt读取它们时,就像前面提到的@KoralpCatalsakal一样

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)

相关问题 更多 >