重新划分网格(使用网格的输出来创建新的网格)



假设我有三个网格,

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)

使得A, B, C都对应于网格(a,b,c,索引='ij')?

场景如下。我首先有a, b和网格a, b-稍后,我生成c-在这一点上,我需要重新划分包含c的所有内容。但是代码不再有a,b可供处理。

所以现在是调整代码以传递a, b的权衡-如果重新网格化a, b是不可能的或效率太低。

你们有什么想法吗?

基于david的想法,您可以使用A[:,0]B[0,:]。这将工作,即使AB包含重复的值;并且取一个slice比调用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')

您可以使用唯一的元素重构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])

最新更新