Как сохранить целое число рядом с np.array - PullRequest
0 голосов
/ 04 мая 2018

Я делаю ConvNet и мне нужно сохранить одно изображение вместе с целым числом (1 или 0), которое указывает, было ли выполнено действие или нет. Как мне это сделать? Я попробовал это:

key_pressed = np.array(key_check(self.key)) # key_check() returns 1 or 0
window = np.array(window) # window is opened with cv2

print(window.shape, key_pressed.shape) # (474, 31) (1,)
print(np.concatenate((window, key_pressed)))
      ^^
ValueError: all the input arrays must have same number of dimensions

Делать то, что я хочу, можно даже с помощью numpy, видя, что массивы имеют разные размеры? Любые идеи о том, как сохранить эти данные?

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Посмотрите на scipy.io.savemat и loadmat:

savemat(your_path, dict(key=key_pressed, window=window))

Затем, используя loadmat, вы получите ответ с ключом и нужным кадром. Существует даже параметр do_compression.

Редактировать: несовместимость форм не имеет к этому никакого отношения, поскольку вы не создаете новый массив, а сохраняете ключ и окно отдельно в одном файле.

In [53]: from scipy import io

In [54]: a = np.zeros([3, 4])

In [55]: b = np.ones([5, 17])

In [56]: io.savemat("foo.mat", dict(a=a, b=b))

работает как шарм.

0 голосов
/ 04 мая 2018

NumPy не позволит вам просто объединять вещи произвольных размеров: это нарушает функциональное определение массива или матрицы. Вы пытаетесь сделать простое сопоставление, а не функциональное объединение. Все, что вы пытаетесь сделать, это отображать их рядом, верно? Это не матричная операция. Например, действительно ли вы планируете выполнять матричное умножение полученного в результате склеенного массива ???

Вам нужен простой контейнер для хранения обоих предметов. Я ожидаю, что тривиальный class сделает работу за вас. Напишите комбинированный метод отображения для полученной пары и используйте его для рендеринга.

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