将NumPy转换为float。
将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日
你不能将numpy数组转换为浮点数(除非它只有一个值),因为正如它的名字所表示的,它是一个数组。数组就像一系列浮点数。基本上这意味着你尝试将多个数转换成单个数。
另一方面,当你使用loadtxt
读取它们时,数值本身应该已经是浮点数了,就像@KoralpCatalsakal所提到的那样。
np.average
、np.max
和np.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)
您可以使用
y = 12.0 isinstance(y, float)
来检查实例的类型(例如变量)。这类似于检查数字是整数还是浮点数的方式。
正如@Florian H所提到的,如果您的文本文件只包含一个数字列(每行一个数字),那么由loadtxt
读取的numpy数组将仅包含浮点数,因此您不用担心。