
上QQ阅读APP看书,第一时间看更新
2.2.1 四则运算
NumPy提供了许多ufunc函数,例如计算两个数组之和的add()函数:
a = np.arange(0, 4) b = np.arange(1, 5) np.add(a, b) array([1, 3, 5, 7])
add()返回一个数组,它的每个元素都是两个参数数组的对应元素之和。如果没有指定out参数,那么它将创建一个新的数组来保存计算结果。如果指定了第三个参数out,则不产生新的数组,而直接将结果保存进指定的数组。
np.add(a, b, a) a array([1, 3, 5, 7])
NumPy为数组定义了各种数学运算操作符,因此计算两个数组相加可以简单地写为a + b,而np.add(a, b, a)则可以用a +=b来表示。表2-1列出了数组的运算符以及与之对应的ufunc函数,注意除号的意义根据是否激活__future__.division有所不同。
表2-1 数组的运算符以及对应的ufunc函数

数组对象支持操作符,极大地简化了算式的编写,不过要注意如果算式很复杂,并且要运算的数组很大,将会因为产生大量的中间结果而降低程序的运算速度。例如,假设对a、b、c三个数组采用算式x=a*b+c加以计算,那么它相当于:
t = a * b x = t + c del t
也就是说,需要产生一个临时数组t来保存乘法的运算结果,然后再产生最后的结果数组x。可以将算式分解为下面的两行语句,以减少一次内存分配:
x = a*b x += c