Ах, я понял.Вы действительно имеете в виду массив функций .
Ошибка несоответствия типов возникает из-за того, что при вызове zeros
по умолчанию создается массив с плавающей точкой.Таким образом, ваш оригинал сработал бы, если бы вместо этого вы сделали myArray = numpy.empty(x, dtype=numpy.object)
(обратите внимание, что empty
имеет смысл больше, чем zeros
здесь)Немного более питонная версия - использовать понимание списка
myArray = numpy.array([createFunction(i) for i in range(x)]).
Но вам может вообще не понадобиться создавать пустой массив, в зависимости от того, что вы хотите с ним делать:
myArray = [createFunction(i) for i in range(x)]
Если вы хотите избежать списка, лучше использовать numpy.fromfunction
вместе с numpy.vectorize
:
myArray = numpy.fromfunction(numpy.vectorize(createFunction),
shape=(x,), dtype=numpy.object)
, где (x,)
это кортеж, дающий форму массива.Вызов vectorize
необходим, потому что fromfunction
предполагает, что функция может работать с массивом входных данных и возвращает массив скаляров, а vectorize
преобразует функцию, чтобы сделать именно это.dtype=object
необходим, так как иначе numpy пытается создать массив с плавающей точкой.