将NumPy转换为float。

49 浏览
0 Comments

将NumPy转换为float。

我刚开始学习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

等等。

admin 更改状态以发布 2023年5月23日
0
0 Comments

你不能将numpy数组转换为浮点数(除非它只有一个值),因为正如它的名字所表示的,它是一个数组。数组就像一系列浮点数。基本上这意味着你尝试将多个数转换成单个数。

另一方面,当你使用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)

0
0 Comments

您可以使用

y = 12.0
isinstance(y, float)

来检查实例的类型(例如变量)。这类似于检查数字是整数还是浮点数的方式。

正如@Florian H所提到的,如果您的文本文件只包含一个数字列(每行一个数字),那么由loadtxt读取的numpy数组将仅包含浮点数,因此您不用担心。

0