Если массив 1d, назначение работает нормально:
In [767]: arr = np.empty(4,object)
In [768]: arr[:] = [np.arange(6) for _ in range(4)]
In [769]: arr
Out[769]:
array([array([0, 1, 2, 3, 4, 5]), array([0, 1, 2, 3, 4, 5]),
array([0, 1, 2, 3, 4, 5]), array([0, 1, 2, 3, 4, 5])], dtype=object)
In [770]: arr.reshape(2,2)
Out[770]:
array([[array([0, 1, 2, 3, 4, 5]), array([0, 1, 2, 3, 4, 5])],
[array([0, 1, 2, 3, 4, 5]), array([0, 1, 2, 3, 4, 5])]],
dtype=object)
Мы также можем начать с (2,2), но присвоить ravel()
(a view
):
In [771]: arr = np.empty((2,2),object)
In [772]: arr.ravel()[:] = [np.arange(6) for _ in range(4)]
In [773]: arr
Out[773]:
array([[array([0, 1, 2, 3, 4, 5]), array([0, 1, 2, 3, 4, 5])],
[array([0, 1, 2, 3, 4, 5]), array([0, 1, 2, 3, 4, 5])]],
dtype=object)
flat
, по-видимому, сериализует RHS:
In [774]: arr.flat = [np.arange(6) for _ in range(4)]
In [775]: arr
Out[775]:
array([[0, 1],
[2, 3]], dtype=object)
Если список RHS правильно вложен, мы можем напрямую назначить массив 2d:
In [779]: alist = Out[770].tolist()
In [780]: alist # list of lists of arrays
Out[780]:
[[array([0, 1, 2, 3, 4, 5]), array([0, 1, 2, 3, 4, 5])],
[array([0, 1, 2, 3, 4, 5]), array([0, 1, 2, 3, 4, 5])]]
In [781]: arr = np.empty((2,2),object)
In [782]: arr[:] = alist
In [783]: arr
Out[783]:
array([[array([0, 1, 2, 3, 4, 5]), array([0, 1, 2, 3, 4, 5])],
[array([0, 1, 2, 3, 4, 5]), array([0, 1, 2, 3, 4, 5])]],
dtype=object)