【发布时间】:2021-03-22 09:59:51
【问题描述】:
我想将形状为 (3, 225, 400) 的 Numpy 数组写入二进制文件。
这些数组基本上是使用屏幕缓冲区生成的,每个屏幕都有一个标签。我的目标是用标签保存每个屏幕。
numpy.save 只接收两个参数:文件指针和要保存的数组。唯一的选择似乎是将标签附加到数组,如下所示:
with open(file, 'wb') as f:
np.save(f, np.append(buffer, [label]) )
但是,我不喜欢这个。另一种方法可能是只保存数组,然后像常规二进制写入一样写入“\t label”:
with open(file, 'wb') as f:
np.save(f, buffer)
f.write("\t" + label)
我不确定 np.save 是否在保存后将文件指针移动到新行。
考虑到我将高频保存数十万个数组标签对,您对效率有何建议?
【问题讨论】:
-
buffer的dtype是什么?可能是一些数字。label的本质是什么?确保在保存之前查看np.append(buffer,[label])。检查形状和数据类型,以及一些值。没有办法在np.save之前或期间向数组添加标签属性。最好将文件名用作“标签”,或者有一个单独的文件将文件名和标签配对。或者考虑使用 HDF5 文件 (h5py),它可以保存多个数组以及“标签”属性。 -
是的,数组中充满了数值。标签的类型视情况而定。让我们暂时假设为布尔值。创建单独的文件可能效率低下,但我会看看 HDF5 文件,谢谢!
-
标量布尔数组还是布尔数组?如果是数组,是什么形状?
标签: python performance numpy numpy-ndarray