ufunc函数是针对数组进行操作的,且都以数组作为输出。
常用的ufunc函数运算有四则运算、比较运算、逻辑运算。
ufunc函数支持全部的四则运算,其表示对数组中的各元素分别进行四则运算,所以进行四则运算的两个数组形状必须相同。
import numpy as np
#ufunc函数运算
x=np.array([1,2,3])
y=np.array([4,5,6])
print(x+y) #四则运算。相加+、相减-、相乘*、相除/、数组幂运算**
print(x>y) #比较运算。返回布尔型,数组的比较运算有:> < >= <= !=
print(np.all(x==y)) #逻辑运算。返回布尔型,np.all()表逻辑and,np.any()表逻辑or
#ufunc函数的广播(broadcasting)机制
#指不同形状的数组间执行算数运算的方式,当两数组shape不同,实行广播机制
a=np.array([[0,0,0],[1,1,1],[2,2,2],[3,3,3]])
b=np.array([1,2,3])
print(a+b)
#[0 0 0;1 1 1;2 2 2;3 3 3]+[1 2 3;1 2 3;1 2 3;1 2 3]=[1 2 3;2 3 4;3 4 5;4 5 6]
广播机制需要遵循四个原则:
(1)让所有的输入数组向其中shape最长的数组看齐,shape中不足的部分通过在前面加1补齐
(2)输出数组的shape是输入数组的shape的各个轴上的最大值
(3)若输入数组的某个轴和输出数组的对应轴的长度相同或者其长度为1,则这个数组能够用来计算,否则出错
(4)当输入数组的某个轴长度为1时,沿着此轴运算时使用第一轴上的第一组值