【问题标题】:How do I get the largest 2d slice of a numpy array?如何获得 numpy 数组的最大二维切片?
【发布时间】:2016-07-04 14:04:04
【问题描述】:

我有一个尺寸不同的 3d numpy 数组。我想绘制一个平行于最大的二维和最小的中间的切片。如何获得切片?

例如如果我的原始数据是

np.ones(3*4*5).reshape(3,4,5)

我想获取数据集

np.ones(3*4*5).reshape(3,4,5)[1,:,:]

这是第一个维度的一半,因为它是最小的,而其他两个维度都是因为它们更大。

【问题讨论】:

    标签: python numpy


    【解决方案1】:

    您可以使用 np.rollaxis 来完成这样的任务,这适用于任何多维 ndarray,就像这样 -

    def ndim_largest_slice(arr):
        shp = arr.shape
        return np.rollaxis(arr, np.argmin(shp), 0)[shp[np.argmin(shp)]/2]
    

    示例运行 -

    In [511]: arr = np.random.rand(6,7,6,3,4,5)
    
    In [512]: np.allclose(ndim_largest_slice(arr),arr[:,:,:,1,:,:])
    Out[512]: True
    
    In [513]: arr = np.random.rand(6,7,6,4,5,5)
    
    In [514]: np.allclose(ndim_largest_slice(arr),arr[:,:,:,2,:,:])
    Out[514]: True
    
    In [515]: arr = np.random.rand(3,4,5)
    
    In [516]: np.allclose(ndim_largest_slice(arr),arr[1,:,:])
    Out[516]: True
    

    【讨论】:

      猜你喜欢
      • 2015-04-10
      • 2018-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-28
      • 2021-08-21
      • 2015-01-29
      • 2021-11-23
      相关资源
      最近更新 更多