Z=np.array([1.0,1.0,1.0,1.0]) def func(TempLake,Z): A=TempLake B=Z return A*B Nlayers=Z.size N=3 TempLake=np.zeros((N+1,Nlayers)) kOUT=np.vectorize(func)(TempLake,Z)
Это тоже работает, вместо того, чтобы зацикливать, просто векторизовать, но читать ниже заметки из скудной документации: https://docs.scipy.org/doc/numpy/reference/generated/numpy.vectorize. html
Функция векторизации предоставляется в первую очередь для удобства, а не для производительности. Реализация по существу является циклом for.
Если otypes не указывается, то вызов функции с первым аргументом будет использоваться для определения количества выходов. Результаты этого вызова будут кэшироваться, если кеш имеет значение True, чтобы предотвратить вызов функции дважды. Однако для реализации кеша должна быть завершена оригинальная функция, которая замедлит последующие вызовы, поэтому сделайте это только в том случае, если ваша функция будет дорогой.