Given two 1-d numpy arrays:
>>> a = np.arange(10)
>>> b = np.arange(2)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> b
array([0, 1])
How can I add them such that the values of b are added to values of a as if b was repeated five times? This kind of thing is automatic in R but seemingly not in Numpy:
>>> a+b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: operands could not be broadcast together with shapes (10,) (2,)
Best I can come up with is to tile b to make it the right size, but this seems clunky (especially the integer division...):
>>> a + np.tile(b, a.shape[0]//b.shape[0])
array([ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10])
assuming the length of b divides the length of a, is there a better solution?