Как я прокомментировал, собирать массивы с insert
(или вариациями на concatenate
) трудно правильно и медленно при работе.Каждый раз он создает новый массив.Сбор массивов в списке и создание одного массива в конце проще и быстрее.Добавление в список является эффективным и простым в использовании.
Тем не менее, ваш отчетный результат выглядит подозрительно.Я могу воспроизвести его с помощью:
In [281]: arr = np.zeros(2, object)
In [282]: arr
Out[282]: array([0, 0], dtype=object)
In [283]: arr[0] = np.array([0,0,0])
In [284]: arr[1] = np.array([0,0,0])
In [285]: arr
Out[285]: array([array([0, 0, 0]), array([0, 0, 0])], dtype=object)
In [286]: np.insert(arr, 2, np.array([0,0,0]), 0)
Out[286]: array([array([0, 0, 0]), array([0, 0, 0]), 0, 0, 0], dtype=object)
На более ранней итерации main_f_array
должен был быть создан как массив dtype объекта.
Если бы это был «нормальный» 2d массив,вставка будет другой:
In [287]: arr1 = np.zeros((2,3),int)
In [288]: np.insert(arr1, 2, np.array([0,0,0]), 0)
Out[288]:
array([[0, 0, 0],
[0, 0, 0],
[0, 0, 0]])
Или более итеративно, как я думаю, вы хотели:
In [289]: f_array = np.array([0,0,0])
In [290]: main = f_array
In [291]: main = np.array([main, f_array])
In [292]: main
Out[292]:
array([[0, 0, 0],
[0, 0, 0]])
In [293]: main = np.insert(main, 2, f_array, 0)
In [294]: main
Out[294]:
array([[0, 0, 0],
[0, 0, 0],
[0, 0, 0]])