dla potomności, myślę, że to jest szybsze:
a = np.array([np.array(list()) for _ in y])
Możesz nawet być w stanie przejść w generatorze (czyli [] ->()), w którym to przypadku lista wewnętrzna jest nigdy w pełni przechowywane w pamięci.
odpowiedzi na komentarz poniżej:
>>> import numpy as np
>>> y = range(10)
>>> a = np.array([np.array(list) for _ in y])
>>> a
array([array(<type 'list'>, dtype=object),
array(<type 'list'>, dtype=object),
array(<type 'list'>, dtype=object),
array(<type 'list'>, dtype=object),
array(<type 'list'>, dtype=object),
array(<type 'list'>, dtype=object),
array(<type 'list'>, dtype=object),
array(<type 'list'>, dtype=object),
array(<type 'list'>, dtype=object),
array(<type 'list'>, dtype=object)], dtype=object)
Co może być bardziej efektywnym podejściem, należy przydzielić dużą tablicę i podwoić jej wielkość za każdym razem, gdy osiągniesz pojemność. – wim