Python numpy.square vs **
Есть ли разница между numpy.square
и использованием оператора **
в массиве Numpy?
Из того, что я вижу, он дает тот же результат.
Любые различия в эффективности выполнения?
Пример пояснения:
In [1]: import numpy as np
In [2]: A = np.array([[2, 2],[2, 2]])
In [3]: np.square(A)
Out[3]:
array([[4, 4],
[4, 4]])
In [4]: A ** 2
Out[4]:
array([[4, 4],
[4, 4]])
Ответы
Ответ 1
Вы можете проверить время выполнения, чтобы получить четкое представление об этом
In [2]: import numpy as np
In [3]: A = np.array([[2, 2],[2, 2]])
In [7]: %timeit np.square(A)
1000000 loops, best of 3: 923 ns per loop
In [8]: %timeit A ** 2
1000000 loops, best of 3: 668 ns per loop
Ответ 2
Для большинства приборов обе дают одинаковые результаты.
Как правило, стандартный pythonic a * a или ** 2 быстрее, чем numpy.square() или numpy.pow(), но функции numpy часто более гибкие и точные.
Если вы выполняете вычисления, которые должны быть очень точными, придерживайтесь numpy и, возможно, даже используйте другие типы данных (float96).
Для нормального использования ** 2 сделает хорошую работу и ускорит работу, чем numpy.
Ребята в Этот поток привел несколько хороших примеров для подобных вопросов.