InfoQ Homepage News NumPy and SciPy for .NET
NumPy and SciPy for .NET
This item in japanese
Jul 25, 2011 1 min read
Write for InfoQ
Feed your curiosity. Help 550k+ globalsenior developers
each month stay ahead.Get in touch
As part of the Python Tools for Visual Studio project the well-known NumPy and SciPy libraries were ported to .NET. The port, which combines C# and C interfaces over a native C core, was done in such a way that all .NET languages can take advantage of it.
The IronPython ports of NumPy and SciPy are full .NET ports and include custom C#/C interfaces to a common native C core. This means that the full functionality is available not only to IronPython but to all .NET languages such as C# or F# by directly accessing the C# interface objects or sometimes by evaluating IronPython expressions from other .NET languages. This means that a multi-dimensional array object (ndarray) can be passed seamlessly between IronPython and C# or F# code. Further, the ndarray object implements the standard IEnumerable interface, allowing the array object to often be used with existing code that is not specific to NumPy.
NumPy is a fairly low level API for performing mathematical operations on large, multi-dimensional arrays and matrices. This library, originally known as Numeric, dates back to 1995, just one year after Python 1.0 was released. The current name of version of the library was created in 2005 by combining the earlier versions with a competing library known as numarray.
Built on top of this is SciPy. According to Wikipedia, “SciPy contains modules for optimization, linear algebra, integration, interpolation, special functions, FFT, signal and image processing, ODE solvers and other tasks common in science and engineering.” It is often considered an alternative to MATLAB, though SciPy often has to be combined with other libraries to fully replace the former.
The combination of NumPy and SciPy offers some notable advantages over normal .NET code. While .NET’s garbage collector can offer better performance than manual memory management, there is something to be said for the raw computational speed one can get from highly optimized C code.
On top of this is the concept of views. Instead of copying arrays, NumPy allows one to create arrays that are live subsets of other arrays. Changing the subset, known formally as a view, also changes the original array. This allows for cleaner code without sacrificing performance.
This content is in the .NET topic
Related Topics:
-
Related Editorial
-
Related Sponsors
-
Popular across InfoQ
-
Anthropic Lead: HTML Increasingly Better Than Markdown at Keeping Humans Engaged in Agentic Loops
-
AWS Launches Blocks, an Open-Source TypeScript Framework Designed for AI Agents to Build Backends
-
Google OpenRL is an Experimental Self-hosted API for LLM Post-Training Fine-Tuning
-
Java News Roundup: Spring Tools, Helidon, Open Liberty, TomEE, JobRunr, Hibernate, Commonhaus
-
How eBPF Empowers Developers to Observe inside the Linux Kernel in a Safe and Unintrusive Way
-
AI Is Moving up the Software Lifecycle: from Code Review to PRD Governance
-
The InfoQ Newsletter
A round-up of last week’s content on InfoQ sent out every Tuesday. Join a community of over 250,000 senior developers. View an example
