np.meshgrid 从坐标向量返回坐标矩阵
例如:
import numpy as np
x = np.arange(-2, 2)
y = np.arange(0, 5)
m, n =np.meshgrid(x, y)
x返回结果: y返回结果:
array([-2, -1, 0, 1]) array([0, 1, 2, 3, 4])
m返回结果: n返回结果:
array([[-2, -1, 0, 1], array([[0, 0, 0, 0], [-2, -1, 0, 1], [1, 1, 1, 1], [-2, -1, 0, 1], [2, 2, 2, 2], [-2, -1, 0, 1], [3, 3, 3, 3], [-2, -1, 0, 1]]) [4, 4, 4, 4]])
m, n =np.meshgrid(y, x)
m返回结果: n返回结果:
array([[0, 1, 2, 3, 4], array([[-2, -2, -2, -2, -2], [0, 1, 2, 3, 4], [-1, -1, -1, -1, -1], [0, 1, 2, 3, 4], [0, 0, 0, 0, 0], [0, 1, 2, 3, 4], [1, 1, 1, 1, 1]]) [0, 1, 2, 3, 4]])
由此可见, np.meshgrid函数将参数1当做第1个结果的每一行, 并且一共有参数2的长度个行。同时, 第2个结果的每一列为参数2的内容, 并且重复参数1的长度个列。(当然, meshgrid的参数并不受限, 甚至可以得到任意N维空间中的坐标矩阵)
np.r_是按列连接两个矩阵,就是把两矩阵上下相加,要求列数相等。
np.c_是按行连接两个矩阵,就是把两矩阵左右相加,要求行数相等。
ndarray.ravel() ndarray.flatten() 都是将多维数组降为一维, 两者的区别在于ravel返回的是一个view, 而flatten返回的是一个copy 。