ufunc是universal function的缩写,意思是这些函数能够作用于narray对象的每一个元素上,而不是针对narray对象操作,numpy提供了大量的ufunc的函数。这些函数在对narray进行运算的速度比使用循环或者列表推导式要快很多,但请注意,在对单个数值进行运算时,python提供的运算要比numpy效率高。
四则运算
numpy提供的四则ufunc有如下一些:
比较运算 & bool运算
numpy同时提供了=、<、>等这些比较运算符,这些运算符的结果是bool值或者bool数组。
ufunc方法
ufunc函数对象本身还有一些方法函数,这些方法只对两个输入、一个输出的ufunc 函数有效,其他的ufunc对象调用这些方法时会抛出ValueError异常。
(1). reduce(),沿着指定轴对数组进行操作,相当于将相应的操作放到该轴元素之间。
np.add.reduce([1,2,3]) #1+2+3=6
np.add.reduce([[1,2,3],[4,5,6]]) #[1+4,2+5,3+6]=[5,7,9]
np.add.reduce([[1,2,3],[4,5,6]],axis=1) #[1+2+3,4+5+6]=[6,15]
(2). accumulate()和reduce()类似,区别时是前者会保留中间结果:
np.add.accumulate([1,2,3]) #[1,1+2,1+2+3]=[1,3,6]
np.add.accumulate([[1,2,3],[4,5,6]],axis=1)
#
array([[ 1, 3, 6],
[ 4, 9, 15]])
(3). reduceat()方法计算多纽reduce()的结果,通 过 indices参数指定一系列的起始和终止位置。它的计算有些特别,,计算的方法如下:
if indices[i] < indices[i+1]:
result[i] = <op>.reduce(a[indices[i]:indices[i+1]])
else: