python - 将多个 numpy 数组存储到 .npy 文件中,同时保留数组顺序
问题描述
在 Tensorflow 的消费 numpy 数组文档中,它显示了以下代码:
# Load the training data into two NumPy arrays, for example using `np.load()`.
with np.load("/var/data/training_data.npy") as data:
features = data["features"]
labels = data["labels"]
# Assume that each row of `features` corresponds to the same row as `labels`.
assert features.shape[0] == labels.shape[0]
dataset = tf.data.Dataset.from_tensor_slices((features, labels))
显然,training_data.npy
由两个数组组成:特征和标签。所以现在假设我有两个 numpy 数组features
,labels
它们具有相同的第 0 维,并且以这样的方式排序,使得每个对应的feature
并且label
具有完全相同的索引。如何将它们保存在一个.npy
文件中,我可以使用一个简单的键(就像上面显示的代码)从中访问数组,同时必须保留数组顺序?
解决方案
with np.load("/var/data/training_data.npy") as data:
features = data["features"]
labels = data["labels"]
在此代码data
中像字典一样被索引。但npy
文件中存储的内容的详细信息尚不清楚。它可能是
由
np.savez
(通常标记为 anpz
)创建的 zip 存档,features
并且labels
是从其各自存档文件加载的数组。它可以是一个结构化数组,有两个字段,“特征”和“标签”。在这种情况下
data.shape
,data.dtype
会很有用。我还想说它可以是一个真正的字典,有两个键和值。但是
np.save
会把它放在一个 1 元素对象 dtype 数组中,需要访问data.item()['features']
等。
所以更多地了解data
和npy
归档会很好。
保存数组具有相同的两个选项 -savez
创建一个 zip 存档,或创建一个结构化数组,然后保存 - 实际上np.save(data)
。
维护两个数组的顺序和索引很容易——顺序是正常的。只要您以相同的方式对它们进行切片、索引和/或洗牌,两个数组之间的元素配对就会保持不变。
推荐阅读
- java - AWS ElasticSearch:如何将策略应用于索引
- javascript - 我正在尝试将 SASS 变量导入我的 javascript 文件
- vba - 在 Word 2016 中使用 VBA 代码删除空目录、图表和表格错误消息?
- wordpress - 禁止 woocommerce .txt 上的机器人在 Bing/Google/Yahoo 上不起作用
- react-native - 接收到的对象与图像名称进行比较并在本机反应中弹出图像
- pygame - Pygame Midi libasound_module_conf_pulse.so 错误 + 无法打开从站
- sql - SQL Server:从另一个 CTE 查询中获取 DISTINCT TOP 列表
- android - Android LocationListener,onStatusChanged 和 onProviderDisabled 上的 AbstractMethodError
- r - Rstudio:找不到对象
- java - Oracle 的 MyBatis 查询中的两个删除?