Numpy模块中的Meshgrid函数

环境

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]]

这个方法太难找了

猜你喜欢

转载自blog.csdn.net/magicdoubi/article/details/108931122