Numpy附加数组

时间:2018-02-22 19:35:59

标签: python numpy

我试图在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变量的数据。我该怎么办?感谢。

1 个答案:

答案 0 :(得分:2)

你的sino最初不是一个numpy数组,而是一个Python列表。

Numpy默认情况下在64位安装时首次将其转换为64位数组,然后保持这种状态,是您预期的两倍。

您追加数据的所有时间都会被转换为64位,因为这是目标的格式。

从一开始就使sino成为np.float32数组,以解决问题。