说我有三个网格,
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
都对应于meshgrid(a,b,c,indexing =' ij')?
方案如下。 - 我首先得到a,b和网格A,B - 后来,我生成了c - 此时,我需要重新删除包含c的所有内容。但是代码不再有a,b了。
所以现在它需要权衡调整代码以便传递a,b - 如果重新划分A,B是不可能的或效率太低。
你们对此有什么想法吗?
答案 0 :(得分:1)
根据Davidmh的想法,您可以使用A[:,0]
和B[0,:]
。即使A
或B
包含重复值,这也会有效;并且采取切片比调用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)
您可以使用唯一元素重建a
和b
:
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])