代码之家  ›  专栏  ›  技术社区  ›  Alex

矩阵**2在python/numpy中的含义是什么?

  •  13
  • Alex  · 技术社区  · 16 年前

    x = temp**2
    

    这是点正方形(即,相当于m.*m)还是矩阵正方形(即m必须是正方形矩阵)?特别是,我想知道我是否可以摆脱这段代码中的转置:

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

    把它变成这样:

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

    这将至少为我节省0.1ms,显然值得我花时间。
    谢谢**接线员是不可识别的,我什么都不知道! A.

    3 回复  |  直到 16 年前
        1
  •  14
  •   tom10    16 年前

    它只是每个元素的平方。

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

    印刷品

    [[0 1]
     [4 9]]
    
        2
  •  5
  •   u0b34a0f6ae    16 年前

    你应该读书 NumPy for Matlab Users . 这里提到了elementwise幂运算,您还可以看到,在numpy中,一些运算符对 array matrix .

    >>> from numpy import *
    >>> a = arange(4).reshape((2,2))
    >>> print a**2
    [[0 1]
     [4 9]]
    >>> print matrix(a)**2
    [[ 2  3]
     [ 6 11]]
    
        3
  •  5
  •   Alex Martelli    16 年前

    ** 是Python中的提升到幂运算符,所以 x**2 在Python中表示“x平方”——包括numpy。numpy中的此类操作总是逐元素应用,因此 对数组的每个元素进行平方运算 x (无论尺寸多少)就像, x*2 将每个元素加倍,或 x+2 将每个元素增加2(在每种情况下, x property不受影响——结果是一个新的临时数组,其形状与 x

    编辑 numpy.array 对象,它不适用于 numpy.matrix 对象,其中乘法表示矩阵乘法,而不是像 array (同样,提升权力)——事实上,这是这两种类型之间的关键区别。作为 Scipy tutorial 比如说:

    A*x将在后一种情况下为矩阵 产品,而不是元素产品

    i、 例如 numpy reference 他说:

    矩阵是一种特殊的二维数组 操作。它有一定的特殊性 运营商,如 * (矩阵 ** (矩阵幂)。