**
- это оператор повышения в Python, поэтому x**2
означает «квадрат в квадрате» в Python, включая numpy. Такие операции в numpy всегда применяют элемент за элементом, поэтому x**2
возводит в квадрат каждый элемент массива x
(независимо от количества измерений), как, скажем, x*2
будет удваивать каждый элемент, или x+2
будет увеличивать каждый элемент на два (в каждом случае правильное x
не изменяется - в результате создается новый временный массив той же формы, что и x
!).
Редактировать : поскольку @ kaizer.ze указывает на то, что то, что я написал, относится к numpy.array
объектам, это не относится к numpy.matrix
объектам, где умножение означает умножение матриц, а не элемент на операция элемента, как для array
(и аналогично для повышения до мощности) - действительно, это ключевое различие между двумя типами. Как говорится в Scipy, , например:
Когда мы используем numpy.array или
numpy.matrix есть разница.
A * x будет в последнем случае матрицей
продукт, а не элементарный продукт как
с массивом.
То есть, как указывает numpy ссылка :
Матрица - это специализированный двумерный массив
которая сохраняет свою 2-ю природу
операции. Это имеет определенные особые
операторы, такие как *
(матрица
умножение) и **
(матричная мощность).