我使用Matlab保存了一个.bin文件,其中包含以下双值:[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0]
我想读取这个bin文件并将所有偶数值存储在列表中,将所有奇数值存储在另一个列表中。举个例子,我会得到这样的结果:
even_values = [2.0, 4.0, 6.0, 8.0, 10.0]
odd_values = [1.0, 3.0, 5.0, 7.0, 9.0]
我可以阅读整个bin文件一次。这是我的代码:
import numpy as np
data = open('bin_file', 'rb')
all_values = np.fromfile(data,dtype=np.float32)
我的问题是:
有两种方法可以读取这个bin文件吗?
第一次,我想只读取偶数值,第二次我想读取奇数值。有没有办法做到这一点?
答案 0 :(得分:2)
首先,您是否应该使用float
来比较偶数和奇数值?无论如何,只需打开文件,然后创建新的numpy对象。
import numpy as np
with open('bin_file', 'rb') as data:
all_values = np.fromfile(data, dtype=np.float32)
even_values = all_values[all_values % 2 == 0]
odd_values = all_values[all_values % 2 == 1]
del all_values # if you're really worried about memory