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