matrix**2在python/numpy中是什么意思?

eagi6jfj  于 2022-12-13  发布在  Python
关注(0)|答案(3)|浏览(280)

我正在阅读的一些代码中有一个python ndarray temp,它遇到了以下问题:

x = temp**2

这是点的平方(即,相当于m.*m)或矩阵平方(即m必须是一个方阵)?特别是,我想知道我是否可以摆脱转置在这个代码:

temp = num.transpose(whatever)
num.sum(temp**2,axis=1))

把它变成这样:

num.sum(whatever**2,axis=0)

这将为我节省至少0. 1毫秒,显然值得我花时间。
谢谢!**运算符无法在谷歌上搜索,我什么都不知道!a

ymdaylpp

ymdaylpp1#

它只是每个元素的平方。

from numpy import *
a = arange(4).reshape((2,2))
print a**2

印刷品

[[0 1]
 [4 9]]
vfhzx4xs

vfhzx4xs2#

你应该读NumPy for Matlab Users,这里提到了元素态的幂运算,你也可以看到在numpy中,一些运算符对arraymatrix的应用是不同的。

>>> from numpy import *
>>> a = arange(4).reshape((2,2))
>>> print a**2
[[0 1]
 [4 9]]
>>> print matrix(a)**2
[[ 2  3]
 [ 6 11]]
lnvxswe2

lnvxswe23#

**是Python中的乘幂运算符,因此x**2在Python中表示“x平方”--包括numpy。(无论维数如何)就像x*2将每个元素加倍,或者x+2将每个元素增加2(在每种情况下,x本身不受影响--结果是一个与x形状相同的新临时数组!)。

编辑:正如@kaizer.ze指出的,虽然我写的内容适用于numpy.array对象,但它不适用于numpy.matrix对象,在numpy.matrix对象中,乘法意味着矩阵乘法,而不是像array那样的逐个元素的运算(乘方也是如此)--事实上,这是两种类型之间的关键区别。例如,正如Scipy tutorial所言:

当我们使用numpy.array或numpy.matrix时,这是有区别的。在后一种情况下,A*x将是矩阵积,而不是像数组那样的元素积。
也就是numpy reference所说的:
矩阵是一种特殊的二维数组,通过运算保持其二维性质。它有一些特殊的运算符,如*(矩阵乘法)和**(矩阵幂)。

相关问题