Штабелирование numpy массивов с неизвестными размерами - PullRequest
0 голосов
/ 29 февраля 2020

Я ищу способ сложить numpy массивы из источника, который может иметь динамические c измерения на нулевых осях.

stack_arrays = np.array([], dtype=np.float32)

sources = ["source_1", "source_2"]

for source in sources:

  //return 3D array in the form of (N,W,H) where W and H are fixed but you dont know the size of W and H
  new_arrays = get_arrays(source)
  stack_arrays = np.append(stack_arrays , new_arrays , axis=0)

Когда я пытаюсь запустить этот код, я получаю ошибку :

ValueError: all the input arrays must have same number of dimensions, but the array at index 0 has 1 dimension(s) and the array at index 1 has 3 dimension(s)

Как я могу сделать массив np таким, чтобы он мог принимать любые виды 2D-фигур и складывать их.

РЕДАКТИРОВАТЬ:

Мне удалось решить это с помощью Reshape в конце.

    stack_arrays = np.array([], dtype=np.float32)
    dim_w, dim_h, rows = 0, 0, 0

    sources = ["source_1", "source_2"]

    for source in sources:
          //return 3D array in the form of (N,W,H) where W and H are fixed but you dont know the size of W and H
      new_arrays = get_arrays(source)
      dim_w, dim_h = new_arrays.shape[1], new_arrays.shape[2]
      rows = rows + new_arrays.shape[0]
      stack_arrays = np.append(stack_arrays , new_arrays , axis=0)

new_arrays = new_arrays.reshape(rows, dim_w, dim_h)

1 Ответ

1 голос
/ 29 февраля 2020
np.concatenate([getarray(source) for source in sources], axis=0)

проще и быстрее.

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