{"id":13802361,"url":"https://github.com/nickovs/uumpy","last_synced_at":"2025-05-13T13:30:41.918Z","repository":{"id":103356535,"uuid":"225772907","full_name":"nickovs/uumpy","owner":"nickovs","description":"A subset of numpy for Micropython","archived":false,"fork":false,"pushed_at":"2019-12-28T14:48:05.000Z","size":52,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-04-22T12:35:20.146Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nickovs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2019-12-04T03:41:57.000Z","updated_at":"2023-12-14T16:57:36.000Z","dependencies_parsed_at":"2023-07-12T11:32:00.975Z","dependency_job_id":null,"html_url":"https://github.com/nickovs/uumpy","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickovs%2Fuumpy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickovs%2Fuumpy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickovs%2Fuumpy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickovs%2Fuumpy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nickovs","download_url":"https://codeload.github.com/nickovs/uumpy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253949949,"owners_count":21989277,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-04T00:01:42.797Z","updated_at":"2025-05-13T13:30:41.631Z","avatar_url":"https://github.com/nickovs.png","language":"C","readme":"# uumpy: a subset of numpy for Micropython\n\n**uumpy** is a *'micro'* implementation of parts of [numpy](https://numpy.org) for\n[Micropython](https://micropython.org). It aims to provide an efficient and compact\nimplementation of arithmetic on matrices and multidimensional data types, as well\nas basic linear algebra. In due course the aim is also to support FFT functions.\n\n## Motivation\n\nWhy on Earth would anyone want to put a huge package like *numpy* onto a microcontroller?\nIn general, you would not. That's why this is not a port of *numpy* but instead a new\nimplementation of a subset of the functionality. That subset is geared towards making it easy\nand efficient to implement the sorts of algorithms that people *do* want to put on a\nmicrocontroller. For instance, a microcontroller that has to make decisions based on noisy\nsensor data from a variety of sensors might need to implement a [Kalman filter](https://en.wikipedia.org/wiki/Kalman_filter)\nto get the best guess as to its state. Implementing this sort of filter is vastly easier when\nmatrix operations can be expressed cleanly. Similarly performing\n[Fourier transforms](https://en.wikipedia.org/wiki/Fourier_transform) and\n[convolutions](https://en.wikipedia.org/wiki/Fourier_transform) can be important for extracting\nthe relevant parts of signals coming from sensors in control systems.\n\nOne of the goals of *uumpy* is to allow developers to tune the size of the implementation to\ntheir needs. Large but self-contained blocks of functionality should be optional, so that they\ndon't need to be included if they are not needed. Where there are speed/size trade-offs to be\nmade it should be possible for these to be adjusted at compile-time. If math on multidimensional\narrays is all that is needed then *uumpy* can be pretty compact; when data-type specific math\ncode makes use of fully unrolled loops it can be fast. You choose.\n\n## Usage\n\nAs far as possible *uumpy* should work just like *numpy*. As a result you should just be able\nto use `import uumpy as np` and use the `np` module as you would with `numpy`.\n\n\n## Compilation\n\nThis code forms an 'external module' for Micropython. Documentation about how to\nmake use of external modules can be found in the [Micropython documentation](https://docs.micropython.org/en/latest/develop/cmodules.html).\n\n\n## Release status\n\nThis code is currently still in a pretty early state. It supports core\nmatrix and multidimensional array math operations a some basic linear\nalgebra but is currently missing most of the more esoteric functions\n(although the foundations for them are mostly laid). As it stands it\nis useful for making code that implements matrix maths more readable\nand for solving simple linear systems but is otherwise incomplete.\n\n\n\n","funding_links":[],"categories":["Libraries"],"sub_categories":["Mathematics"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnickovs%2Fuumpy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnickovs%2Fuumpy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnickovs%2Fuumpy/lists"}