diff --git a/arraycontext/fake_numpy.py b/arraycontext/fake_numpy.py index 022e0537b7acf07a23f915b2d0c97b0d96c056d1..916d79d2d179f20bafb0e3af8f13b9431a4c2b34 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: