提问人:rn kim 提问时间:5/23/2023 更新时间:5/23/2023 访问量:35
将 numpy 数组作为列附加到 .npy 文件而不覆盖原始文件
Appending numpy array as columns onto .npy files without overwriting the original file
问:
我使用下面的两种编码方法将两个一维数组(macdLine 和 signalLine)作为列附加到 .npy 文件上,每个文件都包含一个由“i”表示的大型二维数组(每个约 50MB)。当您有几个文件时,这两种方法都足够快,但当有许多文件要处理时(可能需要处理超过 25 个文件)时,它们的速度会很慢。我已经包括了多处理,但我仍然想进一步提高速度。挑战在于,每次发生此类追加时,这些方法都需要覆盖文件——是否有不同的方法或代码更改来实现更快的追加操作(和/或不覆盖原始文件)?
方法1:
file_path = "%s.npy" % (i)
stackedFile = np.save(i, (np.column_stack(((np.load(file_path)),
macdLine, signalLine))),
allow_pickle=True, fix_imports=False)
方法2:
file_path = "%s.npy" % (i)
npyToPandas['8'] = macdLine
npyToPandas['9'] = signalLine
stackedFile = np.save(i,
(pd.DataFrame(npyToPandas).to_numpy()),
allow_pickle=True, fix_imports=False)
答: 暂无答案
评论
npy
由带有 dtype 和 shape(约 256 字节)等信息的标题块组成,然后是数组data_buffer的副本。该data_buffer本质上是数组的 1d。.当您列堆叠多个数组时,您会创建一个全新的数组,而 save 只是写入该新数组。如果使用现有文件名,则会替换该文件名。它没有任何类型的追加,即使数组的数据布局允许它。ravel
npy