【问题标题】:Re-Meshing ("use output of meshgrid in order to create new meshgrid")重新网格化(“使用网格网格的输出来创建新的网格网格”)
【发布时间】:2014-05-13 17:48:46
【问题描述】:

假设我有三个网格,

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 进行权衡。

你们对此有什么想法吗?

【问题讨论】:

    标签: python numpy scipy


    【解决方案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')
    

    【讨论】:

      【解决方案2】:

      你可以重构 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])
      

      【讨论】:

        猜你喜欢
        • 2019-01-07
        • 1970-01-01
        • 2011-01-18
        • 2017-01-21
        • 2014-01-23
        • 2011-09-15
        • 2019-03-01
        • 1970-01-01
        • 2019-11-09
        相关资源
        最近更新 更多