① Numpy array数组的常见运算
Numpy是python最流行的数学计算库之一,它 支持多维数组与矩阵的各种运算。在Numpy库中ndarray对象是其核心,它支持任意维度的数组(向量),所有的运算都是以array为基础展开的。此外,在 Numpy的 矩阵mat是array的一个子集,也就是二维的数组。
下面我们来看一下array的基本运算。
NumPy数组在与数值进行运算时,具有广播特性。也就是说,数组中的每个元素都会进行同样的运算,这些运算包括“+、-、*、/、**、&、|、^”等。
例如:array([1,2,3,4,5])*2 相当于array([1*2,2*2,3*2,4*2,5*2]), 代码示例如下。
对于维度相同的两个数组,将按照元素逐项进行运算。以‘*’为例:
已知
那么:
代码示例如下
对于维度不同的两个数组,则会进行广播运算, 例如
那么
我们知道对于向量
那么a与b的点积为:
在Numpy中,一维数组的点积(dot)和内积(inner)是相同的。但是对于多维数组来说,则有差别。inner运算中,可以将数组最后一个维度(行)视为向量,两个数组的内积就是逐项对这些向量的内积。而dot运算则是前一个数组雨后一个数组转置后的结果,即inner(a,b.T).
以上代码在Python 3.7中运行通过。
② python里x=randn mat=x.T.dot 是求什么
x=randn这个写法是不对的,randn是numpy里的一个生成随机array的函数。
比如说要生成一个三行两列的随机array,可以这样写:
import numpy
x = numpy.random.randn(3,2)
像这样:
dot(2)是点乘常数就不说了,
那个x.T.dot([1,2,3])就是x.T的
1*1+2*2+3*3=14
2*1+3*2+4*3=20