【问题标题】:Numpy appending arraysNumpy附加数组
【发布时间】:2018-02-22 19:35:58
【问题描述】:

我正在尝试通过 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。 但是我发现size的大小是24MB。

这里发生了什么?我希望 sino 只有 12MB,它只包含来自四个 data 变量的数据。我该怎么做?谢谢。

【问题讨论】:

标签: python numpy


【解决方案1】:

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

默认情况下,Numpy 在 64 位安装时第一次将其转换为 64 位数组,之后它保持不变,是您预期的两倍。

您附加数据的所有时间都将其转换为 64 位,因为那是目标的格式。

从一开始就将sino 设为np.float32 数组以解决问题。

【讨论】:

  • 我明白了。如何将其标记为 numpy float32 数组?
  • 示例:numpy.array([], dtype="float32")。并查看@hpaulj 的评论。
  • 知道了。谢谢!
猜你喜欢
  • 1970-01-01
  • 2020-12-21
  • 1970-01-01
  • 1970-01-01
  • 2019-08-26
  • 2021-03-20
  • 2017-05-22
  • 2020-06-02
  • 2015-03-31
相关资源
最近更新 更多