On Mon, 2017-07-17 at 09:13 +0000, martin.gfel...@swisscom.com wrote: > Dear all > > I have object array of arrays, which I compare element-wise to None > in various places: > > > > > a = > > > > numpy.array([numpy.arange(5),None,numpy.nan,numpy.arange(6),Non > > > > e],dtype=numpy.object) > > > > a > > array([array([0, 1, 2, 3, 4]), None, nan, array([0, 1, 2, 3, 4, 5]), > None], dtype=object) > > > > numpy.equal(a,None) > > FutureWarning: comparison to `None` will result in an elementwise > object comparison in the future. > > > So far, I always ignored the warning, for lack of an idea how to > resolve it. > > Now, with Numpy 1.13, I have to resolve the issue, because it fails > with: > > ValueError: The truth value of an array with more than one element is > ambiguous. Use a.any() or a.all() > > It seem that the numpy.equal is applied to each inner array, > returning a Boolean array for each element, which cannot be coerced > to a single Boolean. > > The expression > > > > > numpy.vectorize(operator.is_)(a,None) > > gives the desired result, but feels a bit clumsy. >
Yes, I guess ones bug is someone elses feature :(, if it is very bad, we could delay the deprecation probably. For a solutions, maybe we could add a ufunc for elementwise `is` on object arrays (dunno about the name, maybe `object_identity`. Just some quick thoughts. - Sebastian > Is there a cleaner, efficient way to do an element-wise (but shallow) > comparison? > > Thank you and best regards, > Martin Gfeller, Swisscom > > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@python.org > https://mail.python.org/mailman/listinfo/numpy-discussion >
signature.asc
Description: This is a digitally signed message part
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@python.org https://mail.python.org/mailman/listinfo/numpy-discussion