重新网格化("使用meshgrid的输出以创建新的meshgrid")

时间:2014-05-13 09:08:12

标签: python numpy scipy

说我有三个网格,

a = arange(0,5)
b = arange(0,3)
c = arange(10,12)

由于某些原因,在我的代码中,我首先需要网格

A, B = meshgrid(a,b,indexing='ij')

我可以做一个简短的方法

A, B, C = remeshgrid(A, B, c, indexing='ij)

这样ABC都对应于meshgrid(a,b,c,indexing =' ij')?

方案如下。   - 我首先得到a,b和网格A,B   - 后来,我生成了c   - 此时,我需要重新删除包含c的所有内容。但是代码不再有a,b了。

所以现在它需要权衡调整代码以便传递a,b - 如果重新划分A,B是不可能的或效率太低。

你们对此有什么想法吗?

2 个答案:

答案 0 :(得分:1)

根据Davidmh的想法,您可以使用A[:,0]B[0,:]。即使AB包含重复值,这也会有效;并且采取切片比调用np.unique更快。

In [71]: A[:,0]
Out[71]: array([0, 1, 2, 3, 4])

In [72]: B[0,:]
Out[72]: array([0, 1, 2])

In [73]: A, B, C = np.meshgrid(A[:,0], B[0,:], c, indexing='ij')

答案 1 :(得分:0)

您可以使用唯一元素重建ab

print A
array([[0, 0, 0],
       [1, 1, 1],
       [2, 2, 2],
       [3, 3, 3],
       [4, 4, 4]])

print B
array([[0, 1, 2],
       [0, 1, 2],
       [0, 1, 2],
       [0, 1, 2],
       [0, 1, 2]])

np.unique(A)
array([0, 1, 2, 3, 4])

np.unique(B)
array([0, 1, 2])