目录
- np.meshgrid
- np.where
1.np.meshgrid
可以生成一对协调的点,
x = np.arange(-5, 5, 1)
y = np.arange(-5, 5, 1)
xx, yy = np.meshgrid(x, y, sparse=True)
xx
#输出:array([[-5, -4, -3, -2, -1, 0, 1, 2, 3, 4]])
yy
#输出:
array([[-5],
[-4],
[-3],
[-2],
[-1],
[ 0],
[ 1],
[ 2],
[ 3],
[ 4]])
如果把x改成:x = np.arange(-5, 10, 1)
那么xx会变成:
array([[-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])
再来看一下另一个:
X1=np.arange(-1.5,1.5+0.05,0.05)
X2=np.arange(-3.5,2+0.05,0.05)
[x1,x2]=np.meshgrid(X1,X2)
f=100*(x2-x1**2)**2+(1-x1)**2; # 给定的函数
plt.contour(x1,x2,f,20) # 画出函数的20条轮廓线
plt.show()
其实主要看的,还是输出的东西是什么?
- 一目了然,X1,X2分别生成的是61,111的,间隔为0.05的行向量;
- 经过meshgrid函数之后,X1变成111行,61列,也就是说,X1由一列转成了行向量,之后,复制了111次,刚好这个111又是X2的元素个数。
- X2由原来的一列111个元素,复制了61次,变成111行,61列的数组
2.np.where
numpy.where(条件(布尔类型),
返回x (如果条件为True),
返回y(如果条件为False))
测试一下:
np.where(4>5,4,5)
array(5)