np.where: x and y need to have the same shape as condition ?
Folks, the doc for `where` says "x and y need to have the same shape as condition" http://docs.scipy.org/doc/numpy-dev/reference/generated/numpy.where.html But surely "where is equivalent to: [xv if c else yv for (c,xv,yv) in zip(condition,x,y)]" holds as long as len(condition) == len(x) == len(y) ? And `condition` can be broadcast ? n = 3 all01 = np.array([ t for t in np.ndindex( n * (2,) )]) # 000 001 ... x = np.zeros(n) y = np.ones(n) w = np.where( all01, y, x ) # 2^n x n Can anyone please help me understand `where` / extend "where is equivalent to ..." ? Thanks, cheers -- denis
On Tue, Jan 29, 2013 at 6:16 AM, denis
Folks, the doc for `where` says "x and y need to have the same shape as condition" http://docs.scipy.org/doc/numpy-dev/reference/generated/numpy.where.html But surely "where is equivalent to: [xv if c else yv for (c,xv,yv) in zip(condition,x,y)]" holds as long as len(condition) == len(x) == len(y) ? And `condition` can be broadcast ? n = 3 all01 = np.array([ t for t in np.ndindex( n * (2,) )]) # 000 001 ... x = np.zeros(n) y = np.ones(n) w = np.where( all01, y, x ) # 2^n x n
Can anyone please help me understand `where` / extend "where is equivalent to ..." ? Thanks, cheers -- denis
Do keep in mind the difference between len() and shape (they aren't the same for 2 and greater dimension arrays). But, ultimately, yes, the arrays have to have the same shape, or use scalars. I haven't checked broadcast-ability though. Perhaps a note should be added into the documentation to explicitly say whether the arrays can be broadcastable. Ben Root
participants (2)
-
Benjamin Root
-
denis