In [60]: b = np.empty(3, object)
Вам не нужно повторять при назначении из списка:
In [61]: b[:] = [(1,2),(3,4),(3,5)]
In [62]: b
Out[62]: array([(1, 2), (3, 4), (3, 5)], dtype=object)
In [63]: b.shape
Out[63]: (3,)
Для массива это не работает:
In [64]: b[:] = np.array([(1,2),(3,4),(3,5)])
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-64-3042dce1f885> in <module>
----> 1 b[:] = np.array([(1,2),(3,4),(3,5)])
ValueError: could not broadcast input array from shape (3,2) into shape (3)
Возможно, вы используете итерация в случае массива:
In [66]: for i,n in enumerate(np.array([(1,2),(3,4),(3,5)])):
...: b[i] = n
...:
In [67]: b
Out[67]: array([array([1, 2]), array([3, 4]), array([3, 5])], dtype=object)
Имейте в виду, что массивы dtype объекта являются немного резервным вариантом. np.array(...)
пытается создать многомерный массив, если это возможно (с цифрой c dtype). Создание объекта dtype выполняется только в том случае, если это невозможно. А для некоторых комбинаций фигур он поднимает руки и выдает ошибку.
Превращение этого массива в список массивов с list()
также работает (с той же скоростью):
In [92]: b[:] = list(np.array([(1,2),(3,4),(3,5)]))
In [93]: b
Out[93]: array([array([1, 2]), array([3, 4]), array([3, 5])], dtype=object)