From fb26aaf08f4191c9eb0efd7aa27cfa809aa2376c Mon Sep 17 00:00:00 2001 From: Alexandru Fikl <alexfikl@gmail.com> Date: Sat, 6 Nov 2021 19:50:02 -0500 Subject: [PATCH] use np.isscalar instead of isinstance(x, Number) --- arraycontext/fake_numpy.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/arraycontext/fake_numpy.py b/arraycontext/fake_numpy.py index 022e053..916d79d 100644 --- a/arraycontext/fake_numpy.py +++ b/arraycontext/fake_numpy.py @@ -147,8 +147,7 @@ class BaseFakeNumpyNamespace: def __getattr__(self, name): def loopy_implemented_elwise_func(*args): - from numbers import Number - if all(isinstance(ary, Number) for ary in args): + if all(np.isscalar(ary) for ary in args): return getattr(np, name)(*args) actx = self._array_context @@ -175,8 +174,7 @@ class BaseFakeNumpyNamespace: raise AttributeError(name) def _new_like(self, ary, alloc_like): - from numbers import Number - if isinstance(ary, Number): + if np.isscalar(ary): # NOTE: `np.zeros_like(x)` returns `array(x, shape=())`, which # is best implemented by concrete array contexts, if at all raise NotImplementedError("operation not implemented for scalars") @@ -233,9 +231,7 @@ class BaseFakeNumpyLinalgNamespace: self._array_context = array_context def norm(self, ary, ord=None): - from numbers import Number - - if isinstance(ary, Number): + if np.isscalar(ary): return abs(ary) actx = self._array_context @@ -274,6 +270,7 @@ class BaseFakeNumpyLinalgNamespace: if ary.size == 0: return ary.dtype.type(0) + from numbers import Number if ord == 2: return actx.np.sqrt(actx.np.sum(abs(ary)**2)) if ord == np.inf: -- GitLab