vectorize 函数
np.vectorize('pyfunc','otypes = None')
- 定义一个矢量化函数,它接受一组嵌套的对象或numpy数组作为输入并返回单个numpy数组或元组输出。
- otypes:str或dtypes列表,可选输出数据类型。必须将其指定为字符串typecode字符或数据类型说明符列表。应该是每个输出的一个数据类型说明符。
如下图,定义两个数组a,b,分别比较a,b中的每个元素,如果a>b,返回1,如果b大于a,则返回2,让我们看看函数向量化是如何操作的:
import numpy as np
a=np.array([1,12,5,6,7,9])
b=np.array([5,6,7,8,9,12])
def fun(x,y):
if x>y:
return 1
else:
return 2
fun_array = np.vectorize(fun)
fun_array(a,b)
运行上述代码后得到:
array([2, 1, 2, 2, 2, 2])
尝试在右边代码框完成以下操作:
假设有三个数组,分别记录10位同学的语文、数学、英语三门课程的分数:
chinese=np.array([99, 55, 58, 58, 94, 64, 74, 76, 91, 78])
math=np.array([61, 79, 79, 67, 56, 93, 94, 78, 79, 72])
english=np.array([92, 80, 68, 63, 64, 75, 71, 60, 70, 55])
要求生成一个数组:
- 如果英语成绩最大,返回3;
最终生成的数组为:
np.array([1, 3, 2, 2, 1, 2, 2, 2, 1, 1])