环境
python 3.7
numpy 1.18.4
函数文档
numpy.meshgrid(*xi, copy=True, sparse=False, indexing='xy')[source]
从坐标向量返回坐标矩阵
给定一维坐标数组x1,x2,…,xn,建立N维坐标数组以对N维网格上的N维标量/矢量场进行矢量化评估。
参数:
x1, x2,…, xn : 数组
表示网格坐标的一维数组
indexing : 可选 ‘xy’ 或 ‘ij’
Cartesian (‘xy’, default) or matrix (‘ij’) indexing of output.
笛卡尔(默认为“ xy”)或矩阵(“ ij”)的输出索引。
sparse : 布尔类型
如果为True,则返回一个稀疏网格以节省内存。默认值为False。
copy : 布尔类型
如果为False,则返回原始数组的视图以节省内存。默认值为True。
需要注意的是,sparse = False,copy = False可能会返回非连续数组。
如果需要写入阵列,需要先进行复制。
返回值:
X1, X2,…, XN :ndarray
对于长度为Ni = len(xi)的向量x1,x2,…,‘xn’,如果indexing ='ij’或(N1, N2, N3,…Nn),则返回(N1, N2, N3,…Nn)形状的数组。
如果indexing ='xy’与xi的元素重复出现,则沿x1的第一个维度填充矩阵,沿x2的第二个维度填充矩阵,依此类推。
提示:翻译不好,英文原版在numpy.meshgrid
例子
函数的技巧性操作
我想要实现的操作是给定两个(或是多个)数组
输出一个他们中所有元素的组合方式
每个数组中取一个元素构成输出的子数组
例如:
输入:[A,B,C] ,[1,2]
输出:[[A,1],[A,2],[B,1],[B,2],[C,1],[C,2]]
代码示例:
import numpy as np
x = [1, 2, 3, 4]
y = [8, 9, 7]
xx= np.array(np.meshgrid(x, y)).T.reshape(-1,2)
print(xx)
输出:
[[1 8]
[1 9]
[1 7]
[2 8]
[2 9]
[2 7]
[3 8]
[3 9]
[3 7]
[4 8]
[4 9]
[4 7]]
输入的数组是几个,就把reshape里的参数2改成几
例如三个:
print(np.array(np.meshgrid([1, 2, 3], [4, 5], [8, 9, 7])).T.reshape(-1, 3))
[[1 4 8]
[1 5 8]
[2 4 8]
[2 5 8]
[3 4 8]
[3 5 8]
[1 4 9]
[1 5 9]
[2 4 9]
[2 5 9]
[3 4 9]
[3 5 9]
[1 4 7]
[1 5 7]
[2 4 7]
[2 5 7]
[3 4 7]
[3 5 7]]
这个方法太难找了