numpy必知必会-第三天

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.])

 

posted @ 2020-12-04 17:45  Tracydzf  阅读(76)  评论(0编辑  收藏  举报