numpy必知必会-第三天

作者: 人工智能人话翻译官 | 来源:发表于2019-04-27 19:22 被阅读113次

    11 找到两个array中的通用项,并保存在新的array中
    例如:
    输入a = np.array([1,2,3,2,3,4,3,4,5,6]),b = np.array([7,2,10,2,7,4,9,4,9,8])
    输出array([2, 4])

    a = np.array([1,2,3,2,3,4,3,4,5,6])
    b = np.array([7,2,10,2,7,4,9,4,9,8])
    np.intersect1d(a,b)
    

    输出:

    array([2, 4])
    

    12 从一个array中移除被另一个array包含的元素
    例如:
    输入a = np.array([1,2,3,4,5]),b = np.array([5,6,7,8,9])
    输出array([1,2,3,4])

    a = np.array([1,2,3,4,5])
    b = np.array([5,6,7,8,9])
    np.setdiff1d(a,b)
    

    输出

    array([1,2,3,4])
    

    13 找到两个array中元素一样的位置
    例如:
    输入a = np.array([1,2,3,2,3,4,3,4,5,6]),b = np.array([7,2,10,2,7,4,9,4,9,8])
    输出(array([1, 3, 5, 7]),)

    a = np.array([1,2,3,2,3,4,3,4,5,6])
    b = np.array([7,2,10,2,7,4,9,4,9,8])
    np.where(a == b)
    

    输出:

    (array([1, 3, 5, 7]),)
    

    注意比较的两个array的长度必须一致!

    14 如何从一个array中筛选出一个范围内的元素
    例如:
    输入a = np.array([2, 6, 1, 9, 10, 3, 27])
    输出(array([6, 9, 10]),)

    a = np.array([2, 6, 1, 9, 10, 3, 27])
    index = np.where((a >= 5) & (a <= 10))
    a[index]
    

    输出

    array([ 6,  9, 10])
    

    还可以用以下方式实现:

    index = np.where(np.logical_and(a>=5, a<=10))
    a[index]
    
    a[(a >= 5) & (a <= 10)]
    

    15 通过自定义的python函数,处理两个array中元素
    例如:
    输入
    def maxx(x, y):
    """Get the maximum of two items"""
    if x >= y:
    return x
    else:
    return y

    maxx(1, 5)

    输出
    a = np.array([5, 7, 9, 8, 6, 4, 5])
    b = np.array([6, 3, 4, 8, 9, 7, 1])
    pair_max(a, b)

    先介绍一下numpy.vectorize

    numpy.vectorize(pyfunc, otypes=None, doc=None, excluded=None, cache=False, signature=None)
    Parameters:
    pyfunc :python函数或方法 otypes : 输出数据类型。必须将其指定为一个typecode字符串或一个数据类型说明符列表。每个输出应该有一个数据类型说明符。 doc : 函数的docstring。如果为None,则docstring将是 pyfunc.doc。
    简单说就是把pyfunc的处理结果放到一个array中,组成向量。

    def maxx(x, y):
        """获得两个array中的最大值"""
        if x >= y:
            return x
        else:
            return y
    
    pair_max = np.vectorize(maxx, otypes=[float])
    
    a = np.array([5, 7, 9, 8, 6, 4, 5])
    b = np.array([6, 3, 4, 8, 9, 7, 1])
    
    pair_max(a, b)
    

    输入

    array([6., 7., 9., 8., 9., 7., 5.])
    

    相关文章

      网友评论

        本文标题:numpy必知必会-第三天

        本文链接:https://www.haomeiwen.com/subject/srxlnqtx.html