Numpy необходимо заранее знать длину массива, поскольку он должен выделить достаточно памяти в блоке.
Вы можете начать с пустого массива соответствующего типа, используя np.empty(10_000, object)
.(Помните, что для большинства типов данных пустые массивы могут содержать мусорные данные, обычно безопаснее начинать с np.zeros()
, если только вам не нужна производительность, но объект dtype правильно инициализируется None
с.)
Затем вы можете применить любой вызываемый элемент (например, класс) ко всем значениям, используя np.vectorize
.По возможности быстрее использовать включенные векторизованные функции вместо их преобразования, поскольку vectorize
в основном должен вызывать его для каждого элемента в цикле for.Но иногда вы не можете.
В случае случайных чисел, вы можете создать образец массива любой фигуры, используя np.random.rand()
.Тем не менее, он все равно должен быть преобразован в новый массив объекта dtype, когда вы примените к нему свой класс.Я не уверен, что это быстрее, чем создавать сэмплы в каждом __init__
(или в любом другом вызываемом).Вы должны профилировать его.