From 41a208bcce6a7fc76161f7a058f8aa070c31e120 Mon Sep 17 00:00:00 2001 From: Matthias Diener <mdiener@illinois.edu> Date: Mon, 14 Jun 2021 12:51:36 -0500 Subject: [PATCH] implemented ravel() --- arraycontext/impl/pytato.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/arraycontext/impl/pytato.py b/arraycontext/impl/pytato.py index 76a1143..43138ea 100644 --- a/arraycontext/impl/pytato.py +++ b/arraycontext/impl/pytato.py @@ -148,6 +148,28 @@ class _PytatoFakeNumpyNamespace(BaseFakeNumpyNamespace): import pytato as pt return rec_multimap_array_container(pt.arctan2, y, x) + def ravel(self, a, order="C"): + def _rec_ravel(a): + import pytato as pt + if order in "FC": + return pt.reshape(a, (-1,), order=order) + elif order == "A": + if a.flags.f_contiguous: + return pt.reshape(a, (-1,), order="F") + elif a.flags.c_contiguous: + return pt.reshape(a, (-1,), order="C") + else: + raise ValueError("For `order='A'`, array should be either" + " F-contiguous or C-contiguous.") + elif order == "K": + raise NotImplementedError("PytatoArrayContext.np.ravel not " + "implemented for 'order=K'") + else: + raise ValueError("`order` can be one of 'F', 'C', 'A' or 'K'. " + f"(got {order})") + + return rec_map_array_container(_rec_ravel, a) + # }}} -- GitLab