我试图在for循环中每次迭代生成一个数组/矩阵。 以下是我的代码
import numpy as np
sino = [];
for n in range(0, 4):
fileName = 'D:\zDeflectionBP\data\headData_zdef\COSWeighted_trunk_' + str(n) + '.bin'
f = open(fileName, "rb")
data = np.fromfile(f, np.float32)
sino = np.append(sino, data)
f.close()
fileName = 'D:\zDeflectionBP\data\headData_zdef\Head_FFS_COSWeighted.bin'
f = open(fileName, "wb")
f.write(bytes(sino))
f.close()
每次迭代data
加载有四个
然而,最后,我发现sino的大小(以字节数表示)是应该的两倍。
例如:
每个data
大小:3MB
那么,因为我有四个data
,所以sino的大小应该是:3MB X 4 = 12MB。
但我发现这个大小的大小是24MB。
这里发生了什么?我希望sino
只有12MB,只包含来自四个data
变量的数据。我该怎么办?感谢。
答案 0 :(得分:2)
你的sino
最初不是一个numpy数组,而是一个Python列表。
Numpy默认情况下在64位安装时首次将其转换为64位数组,然后保持这种状态,是您预期的两倍。
您追加数据的所有时间都会被转换为64位,因为这是目标的格式。
从一开始就使sino
成为np.float32
数组,以解决问题。