矢量化计算
概念是:用数组表达式代替循环。
例:计算点(x,y)到原点的长度。首先介绍一个函数,np.meshgrid(*x,*y)。这个函数接收两个数组*x,*y,对于这两个数组上的所有元素,进行一一对应,生成两个矩阵,两个矩阵相同位置上的元素就是点的x和y坐标。
points = np.arange(-5,5,0.01,dtype=np.float64)
xs,ys = np.meshgrid(points,points)
xs
'''
结果:
array([[-5. , -4.99, -4.98, ..., 4.97, 4.98, 4.99],
[-5. , -4.99, -4.98, ..., 4.97, 4.98, 4.99],
[-5. , -4.99, -4.98, ..., 4.97, 4.98, 4.99],
...,
[-5. , -4.99, -4.98, ..., 4.97, 4.98, 4.99],
[-5. , -4.99, -4.98, ..., 4.97, 4.98, 4.99],
[-5. , -4.99, -4.98, ..., 4.97, 4.98, 4.99]])
ys是xs的转置
'''
下面就是调用np.sqrt对数组进行处理:
z = np.sqrt(xs ** 2+ys ** 2)
print(z)
'''
结果:
[[7.07106781 7.06400028 7.05693985 ... 7.04988652 7