On Thu, Nov 22, 2012 at 12:41 PM, Chao YUE <[email protected]> wrote: > Dear all, > > if I have two ndarray arr1 and arr2 (with the same shape), is there some > difference when I do: > > arr = arr1 + arr2 > > and > > arr = np.add(arr1, arr2), > > and then if I have more than 2 arrays: arr1, arr2, arr3, arr4, arr5, then I > cannot use np.add anymore as it only recieves 2 arguments. > then what's the best practice to add these arrays? should I do > > arr = arr1 + arr2 + arr3 + arr4 + arr5 > > or I do > > arr = np.sum(np.array([arr1, arr2, arr3, arr4, arr5]), axis=0)? > > because I just noticed recently that there are functions like np.add, > np.divide, np.substract... before I am using all like directly arr1/arr2, > rather than np.divide(arr1,arr2).
For numpy arrays, a + b just calls np.add(a, b) internally. You can use whichever looks nicer to you. Usually people just use + np.add can be more flexible, though. For instance, you can write np.add(a, b, out=c) but there's no way to pass extra arguments to the "+" operator. In fact np.add is not just a function, it's a "ufunc object" (see the numpy documentation for some more details). So it also provides methods like np.add.reduce(a) # the same as np.sum (except, sadly, with different defaults) np.add.accumulate(a) # like np.cumsum np.add.reduceat(a, indices) # complicated, see docs And there are lots of these ufunc objects, all of which provide these same interfaces. Some of them have associated operators like "+", but others don't. -n _______________________________________________ NumPy-Discussion mailing list [email protected] http://mail.scipy.org/mailman/listinfo/numpy-discussion
