首页 > 解决方案 > 其他值的 trim_zeros 的 Numpy 等价物

问题描述

我想通过从左右删除所有具有特定值(例如 255)的元素来修剪一维 numpy 数组。做所有额外的工作似乎有点傻

np.trim_zeros(arr - 255) + 255

是否有一个等效的trim函数允许您指定触发删除的值?或者我可以通过查看内部结构来推出自己的产品trim_zeros吗?

标签: numpy

解决方案


@hpaulj 指出 for 的代码trim_zeros是用 python 编写的,修改起来非常简单。所以下面的代码可以正常工作,并且应该和内置的一样快trim_zeros

def trim(filt, trim_value=0., trim='fb'):
    """
    Copied from np.trim_zeros, but allows the trim value to be specified
    """
    first = 0
    trim = trim.upper()
    if 'F' in trim:
        for i in filt:
            if i != trim_value:
                break
            else:
                first = first + 1
    last = len(filt)
    if 'B' in trim:
        for i in filt[::-1]:
            if i != trim_value:
                break
            else:
                last = last - 1
    return filt[first:last]

我猜,将它添加到 numpy 代码库中可能会很好。


推荐阅读