Сохраните несколько массивов numpy в файл .npy, сохраняя порядок массивов - PullRequest
0 голосов
/ 26 апреля 2019

В документации , использующей NumPy массивы Tensorflow *, он показывает следующий код:

# 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 состоит из двух массивов: функций и меток.Итак, теперь давайте представим, что у меня есть два массива numpie features и labels, которые имеют одинаковое 0-е измерение и расположены таким образом, что все соответствующие feature и label имеют абсолютно одинаковый индекс.Как сохранить их в одном файле .npy, из которого я могу получить доступ к массивам с помощью простого ключа (как показано в коде выше), в то время как порядок массивов должен быть сохранен?

1 Ответ

0 голосов
/ 26 апреля 2019
with np.load("/var/data/training_data.npy") as data:
  features = data["features"]
  labels = data["labels"]

В этом коде data индексируется как словарь. Но детали того, что хранится в файле npy, неясны. Это может быть

  • zip-архив, созданный np.savez (обычно он помечен как npz), а features и labels - это массивы, загруженные из соответствующих архивных файлов.

  • это может быть структурированный массив с двумя полями: «функции» и «метки». В этом случае data.shape и data.dtype будут полезны.

  • Я также собирался сказать, что это может быть настоящий словарь с двумя ключами и значениями. Но np.save поместил бы это в массив dtype объекта с 1 элементом, требующий доступа как data.item()['features'] и т. Д.

Так что было бы неплохо узнать больше о data и npy файле.

Сохранение массивов имеет те же две опции - с помощью savez для создания zip-архива или путем создания структурированного массива и его сохранения - в результате np.save(data).

Поддерживать порядок и индексировать два массива легко - порядок нормальный. Пока вы нарезаете, индексируете и / или перетасовываете их одним и тем же способом, сохраняется сопряжение элементов между двумя массивами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...