首页 > 解决方案 > 乳清使用 numpy.save/numpy.load 将浮点数组的 numpy 数组保存到 .npy 文件,数组的顺序会改变有什么原因吗?

问题描述

我目前有数据,其中每一行都有一个文本段落和一个 numpy 浮点数组。

据我所知,将这两种数据类型保存为一种数据格式效率不高(如果我错了,请纠正我)。所以我将分别保存它们,当我想再次加入它们时,另一列 int 将用于将两个数据集映射在一起。

我无法弄清楚如何在浮点数组旁边附加一列整数(如果有人有解决方案,我很想听听),然后保存 numpy 数组。

但是后来我意识到,如果我可以确认 numpy.save 和 numpy.load 永远不会改变数组的顺序,我可以使用 numpy.save 保存浮点数组而无需额外的 int 列。

这样我就可以将加载的 numpy 浮点数组按原样附加到 pandas 数据帧。

从逻辑上讲,我看不出行的顺序会改变的任何原因,但也许有一些我不知道的优化压缩。

numpy.save 或 numpy.load 会改变浮点数组的 numpy 数组的顺序吗?

标签: pythonnumpy

解决方案


numpy 保存/加载不会改变顺序。您正在按原样保存 numpy 对象。数组是一个有序的对象。

注意:如果要将多个数据数组保存到同一个文件中,可以使用 np.savez。

>>> np.savez('out.npz', f=array_of_floats, s=array_of_strings)

您可以使用以下方法检索每个:

>>> data = np.load('out.npz')
>>> array_of_floats = data['f']
>>> array_of_strings = data['s']

推荐阅读