Array ( [0] => {{Short description|Python library for numerical programming}} [1] => {{Infobox software [2] => | title = [3] => | name = NumPy [4] => | logo = NumPy logo 2020.svg [5] => | screenshot = NumPy Matplotlib sin x plotted with red dots.svg [6] => | caption = Plot of y=sin(x) function, created with NumPy and [[Matplotlib]] libraries [7] => | collapsible = [8] => | author = [[Travis Oliphant]] [9] => | developer = Community project [10] => | released = As Numeric, {{Start date|1995}}; as NumPy, {{Start date|2006}} [11] => | discontinued = [12] => | latest release version = {{wikidata|property|reference|P348}} [13] => | latest release date = {{start date and age|{{wikidata|qualifier|P348|P577}}}} [14] => | latest preview version = [15] => | latest preview date = [16] => | programming language = [[Python (programming language)|Python]], [[C (programming language)|C]] [17] => | operating system = [[Cross-platform]] [18] => | platform = [19] => | size = [20] => | language = [21] => | genre = [[Numerical analysis]] [22] => | license = [[BSD licenses|BSD]]{{cite web |title=NumPy — NumPy |url=https://numpy.org/ |website=numpy.org |publisher=NumPy developers}} [23] => }} [24] => '''NumPy''' (pronounced {{IPAc-en|ˈ|n|ʌ|m|p|aɪ}} {{respell|NUM|py}}) is a [[Library (computing)|library]] for the [[Python (programming language)|Python programming language]], adding support for large, multi-dimensional [[Array data structure|arrays]] and [[matrix (mathematics)|matrices]], along with a large collection of [[High-level programming language|high-level]] [[mathematics|mathematical]] [[function (mathematics)|functions]] to operate on these arrays.{{cite Q|Q99413970|display-authors=3}} The predecessor of NumPy, Numeric, was originally created by [[Jim Hugunin]] with contributions from several other developers. In 2005, [[Travis Oliphant]] created NumPy by incorporating features of the competing Numarray into Numeric, with extensive modifications. NumPy is [[open-source software]] and has many contributors. NumPy is a NumFOCUS fiscally sponsored project.{{cite web|title=NumFOCUS Sponsored Projects|url=https://numfocus.org/sponsored-projects|publisher=NumFOCUS|access-date=2021-10-25}} [25] => [26] => == History == [27] => ===matrix-sig=== [28] => The Python programming language was not originally designed for numerical computing, but attracted the attention of the scientific and engineering community early on. In 1995 the [[special interest group]] (SIG) ''matrix-sig'' was founded with the aim of defining an [[Array data type|array]] computing package; among its members was Python designer and maintainer [[Guido van Rossum]], who extended [[Python syntax and semantics|Python's syntax]] (in particular the indexing syntax{{Cite web|title=Indexing — NumPy v1.20 Manual|url=https://numpy.org/doc/stable/reference/arrays.indexing.html|access-date=2021-04-06|website=numpy.org}}) to make [[array programming|array computing]] easier. [29] => [30] => ===Numeric=== [31] => An implementation of a matrix package was completed by Jim Fulton, then generalized{{explain|From what to what?|date=April 2020}} by Jim Hugunin and called ''Numeric''{{cite journal [32] => |first1=K. Jarrod [33] => |last1=Millman [34] => |first2=Michael [35] => |last2=Aivazis [36] => |title=Python for Scientists and Engineers [37] => |journal=Computing in Science and Engineering [38] => |volume=13 [39] => |number=2 [40] => |pages=9–12 [41] => |year=2011 [42] => |doi=10.1109/MCSE.2011.36 [43] => |bibcode=2011CSE....13b...9M [44] => |url=http://www.computer.org/csdl/mags/cs/2011/02/mcs2011020009.html [45] => |access-date=2014-07-07 [46] => |archive-date=2019-02-19 [47] => |archive-url=https://web.archive.org/web/20190219031439/https://www.computer.org/csdl/mags/cs/2011/02/mcs2011020009.html [48] => |url-status=dead [49] => }} (also variously known as the "Numerical Python extensions" or "NumPy"), with influences from the [[APL (programming language)|APL]] family of languages, Basis, [[MATLAB]], [[FORTRAN]], [[S (programming language)|S]] and [[S-PLUS|S+]], and others.{{cite journal |author=Travis Oliphant |title=Python for Scientific Computing |journal=Computing in Science and Engineering |year=2007 |url=http://www.vision.ime.usp.br/~thsant/pool/oliphant-python_scientific.pdf |access-date=2013-10-12 |archive-url=https://web.archive.org/web/20131014035918/http://www.vision.ime.usp.br/~thsant/pool/oliphant-python_scientific.pdf |archive-date=2013-10-14 |url-status=dead }}{{cite web |author1=David Ascher |author2=Paul F. Dubois |author3=Konrad Hinsen |author4=Jim Hugunin |author5=Travis Oliphant |title=Numerical Python |url=http://www.cs.mcgill.ca/~hv/articles/Numerical/numpy.pdf |year=1999}} [50] => Hugunin, a graduate student at the [[Massachusetts Institute of Technology]] (MIT),{{rp|10}} joined the [[Corporation for National Research Initiatives]] (CNRI) in 1997 to work on [[Jython|JPython]], leaving Paul Dubois of [[Lawrence Livermore National Laboratory]] (LLNL) to take over as maintainer.{{rp|10}} Other early contributors include David Ascher, Konrad Hinsen and [[Travis Oliphant]].{{rp|10}} [51] => [52] => ===Numarray=== [53] => A new package called ''Numarray'' was written as a more flexible replacement for Numeric. Like Numeric, it too is now deprecated.{{cite web| title = Numarray Homepage | url = http://www.stsci.edu/resources/software_hardware/numarray | access-date = 2006-06-24}}{{cite book [54] => | title = Guide to NumPy [55] => | author = Travis E. Oliphant [56] => | date = 7 December 2006 [57] => | url = https://archive.org/details/NumPyBook [58] => | access-date = 2 February 2017 [59] => }} Numarray had faster operations for large arrays, but was slower than Numeric on small ones,{{cite web| title = [Numpy-discussion] Status of Numeric [60] => | author = Travis Oliphant and other SciPy developers [61] => | url = https://mail.scipy.org/pipermail/numpy-discussion/2004-January/002645.html [62] => | access-date = 2 February 2017 [63] => }} so for a time both packages were used in parallel for different use cases. The last version of Numeric (v24.2) was released on 11 November 2005, while the last version of numarray (v1.5.2) was released on 24 August 2006.{{cite web| title = NumPy Sourceforge Files | url = http://sourceforge.net/project/showfiles.php?group_id=1369 | access-date = 2008-03-24}} [64] => [65] => There was a desire to get Numeric into the Python standard library, but Guido van Rossum decided that the code was not maintainable in its state then.{{when|date=October 2013}}{{cite web|url=https://scipy.github.io/old-wiki/pages/History_of_SciPy.html|title=History_of_SciPy - SciPy wiki dump|website=scipy.github.io}} [66] => [67] => ===NumPy=== [68] => In early 2005, NumPy developer Travis Oliphant wanted to unify the community around a single array package and ported Numarray's features to Numeric, releasing the result as NumPy 1.0 in 2006. This new project was part of [[SciPy]]. To avoid installing the large SciPy package just to get an array object, this new package was separated and called NumPy. Support for Python 3 was added in 2011 with NumPy version 1.5.0.{{cite web| title = NumPy 1.5.0 Release Notes | url = http://sourceforge.net/projects/numpy/files//NumPy/1.5.0/NOTES.txt/view | access-date = 2011-04-29 }} [69] => [70] => In 2011, [[PyPy]] started development on an implementation of the NumPy API for PyPy.{{cite web| title=PyPy Status Blog: NumPy funding and status update | url = http://morepypy.blogspot.com/2011/10/numpy-funding-and-status-update.html | access-date = 2011-12-22 }} As of 2023, it is not yet fully compatible with NumPy.{{cite web| title=NumPyPy Status | url = http://buildbot.pypy.org/numpy-status/latest.html | access-date = 2023-12-19 }} [71] => [72] => == Features == [73] => NumPy targets the [[CPython]] [[reference implementation]] of Python, which is a non-optimizing [[bytecode]] [[Interpreter (computing)|interpreter]]. [[List of algorithms#Computational mathematics|Mathematical algorithms]] written for this version of Python often run much slower than [[Compiler|compiled]] equivalents due to the absence of compiler optimization. NumPy addresses the slowness problem partly by providing multidimensional arrays and functions and operators that operate efficiently on arrays; using these requires rewriting some code, mostly [[inner loop]]s, using NumPy. [74] => [75] => Using NumPy in Python gives functionality comparable to [[MATLAB]] since they are both interpreted,{{cite web [76] => | title = NumPy for Matlab users [77] => | author = The SciPy Community [78] => | url = https://docs.scipy.org/doc/numpy-dev/user/numpy-for-matlab-users.html [79] => | access-date = 2 February 2017 [80] => }} and they both allow the user to write fast programs as long as most operations work on [[Array|arrays]] or matrices instead of [[scalar (computing)|scalars]]. In comparison, MATLAB boasts a large number of additional toolboxes, notably [[Simulink]], whereas NumPy is intrinsically integrated with Python, a more modern and complete [[programming language]]. Moreover, complementary Python packages are available; SciPy is a library that adds more MATLAB-like functionality and [[Matplotlib]] is a [[Plot (graphics)|plotting]] package that provides MATLAB-like plotting functionality. Although matlab can perform sparse matrix operations, numpy alone cannot perform such operations and requires the use of the scipy.sparse library. Internally, both MATLAB and NumPy rely on [[Basic Linear Algebra Subprograms|BLAS]] and [[LAPACK]] for efficient [[linear algebra]] computations. [81] => [82] => Python [[Language binding|bindings]] of the widely used [[computer vision]] library [[OpenCV]] utilize NumPy arrays to store and operate on data. [83] => Since images with multiple channels are simply represented as three-dimensional arrays, indexing, [[Array slicing#1991: Python|slicing]] or [[Mask (computing)#Image masks|masking]] with other arrays are very efficient ways to access specific pixels of an image. [84] => The NumPy array as universal data structure in OpenCV for images, extracted [[Interest point detection|feature points]], [[Kernel (image processing)|filter kernels]] and many more vastly simplifies the programming workflow and [[Debugger|debugging]].{{cn|date=December 2023}} [85] => [86] => Importantly, many NumPy operations release the [[global interpreter lock]], which allows for multithreaded processing.{{Cite web |title=numpy release notes |url=https://numpy.org/devdocs/release/1.9.0-notes.html}} [87] => [88] => NumPy also provides a C API, which allows Python code to interoperate with external libraries written in low-level languages.{{cite book |last1=McKinney |first1=Wes |title=Python for Data Analysis |date=2014 |publisher=O'Reilly |isbn=978-1-449-31979-3 |page=79 |edition=First Edition, Third release |chapter=NumPy Basics: Arrays and Vectorized Computation}} [89] => [90] => === The ndarray data structure === [91] => The core functionality of NumPy is its "ndarray", for ''n''-dimensional array, [[data structure]]. These arrays are [[Stride of an array|strided]] views on memory.{{cite journal |title=The NumPy array: a structure for efficient numerical computation |first1=Stéfan |last1=van der Walt |first2=S. Chris |last2=Colbert |first3=Gaël |last3=Varoquaux |year=2011 |journal=Computing in Science and Engineering |volume=13 |issue=2 |page=22 |publisher=IEEE |doi=10.1109/MCSE.2011.37 |arxiv=1102.1523|bibcode=2011CSE....13b..22V |s2cid=16907816 }} In contrast to Python's built-in list data structure, these arrays are homogeneously typed: all elements of a single array must be of the same type. [92] => [93] => Such arrays can also be views into memory buffers allocated by [[C Programming Language|C]]/[[C++]], [[Python (programming language)|Python]], and [[Fortran]] extensions to the CPython interpreter without the need to copy data around, giving a degree of compatibility with existing numerical libraries. This functionality is exploited by the SciPy package, which wraps a number of such libraries (notably BLAS and LAPACK). NumPy has built-in support for [[memory-mapped file|memory-mapped]] ndarrays. [94] => [95] => ===Limitations=== [96] => Inserting or appending entries to an array is not as trivially possible as it is with Python's lists. [97] => The {{code|np.pad(...)}} routine to extend arrays actually creates new arrays of the desired shape and padding values, copies the given array into the new one and returns it. [98] => NumPy's {{code|np.concatenate([a1,a2])}} operation does not actually link the two arrays but returns a new one, filled with the entries from both given arrays in sequence. [99] => Reshaping the dimensionality of an array with {{code|np.reshape(...)}} is only possible as long as the number of elements in the array does not change. [100] => These circumstances originate from the fact that NumPy's arrays must be views on contiguous [[Data buffer|memory buffers]]. [101] => [102] => [[Algorithm|Algorithms]] that are not expressible as a vectorized operation will typically run slowly because they must be implemented in "pure Python", while vectorization may increase [[Space complexity|memory complexity]] of some operations from constant to linear, because temporary arrays must be created that are as large as the inputs. Runtime compilation of numerical code has been implemented by several groups to avoid these problems; open source solutions that interoperate with NumPy include numexpr{{cite web |title=numexpr |url=https://github.com/pydata/numexpr |author=Francesc Alted |website=[[GitHub]] |access-date=8 March 2014}} and [[Numba]].{{cite web |title=Numba |url=http://numba.pydata.org/ |access-date=8 March 2014}} Cython and [[Pythran]] are static-compiling alternatives to these. [103] => [104] => Many modern [[Big data|large-scale]] scientific computing applications have requirements that exceed the capabilities of the NumPy arrays. [105] => For example, NumPy arrays are usually loaded into a computer's [[Volatile memory|memory]], which might have insufficient capacity for the analysis of large [[Data set|datasets]]. [106] => Further, NumPy operations are executed on a single [[Central processing unit|CPU]]. [107] => However, many linear algebra operations can be accelerated by executing them on [[Computer cluster|clusters]] of CPUs or of specialized hardware, such as [[Graphics processing unit|GPUs]] and [[Tensor Processing Unit|TPUs]], which many [[deep learning]] applications rely on. [108] => As a result, several alternative array implementations have arisen in the scientific python ecosystem over the recent years, such as [[Dask (software)|Dask]] for distributed arrays and [[TensorFlow]] or [https://jax.readthedocs.io JAX] for computations on GPUs. [109] => Because of its popularity, these often implement a [[subset]] of NumPy's [[API]] or mimic it, so that users can change their array implementation with minimal changes to their code required. A library named [[CuPy]],{{Citation|title=Shohei Hido - CuPy: A NumPy-compatible Library for GPU - PyCon 2018|url=https://www.youtube.com/watch?v=MAz1xolSB68 |archive-url=https://ghostarchive.org/varchive/youtube/20211221/MAz1xolSB68 |archive-date=2021-12-21 |url-status=live|language=en|access-date=2021-05-11}}{{cbignore}} accelerated by [[Nvidia]]'s [[CUDA]] framework, has also shown potential for faster computing, being a '[[drop-in replacement]]' of NumPy.{{Cite web|last=Entschev|first=Peter Andreas|date=2019-07-23|title=Single-GPU CuPy Speedups|url=https://medium.com/rapids-ai/single-gpu-cupy-speedups-ea99cbbb0cbb|access-date=2021-05-11|website=Medium|language=en}} [110] => [111] => == Examples == [112] => [113] => import numpy as np [114] => from numpy.random import rand [115] => from numpy.linalg import solve, inv [116] => a=np.array([[1,2,3,4],[3,4,6,7],[5,9,0,5]]) [117] => a.transpose() [118] => [119] => [120] => === Basic operations === [121] => [122] => >>> a = np.array([1, 2, 3, 6]) [123] => >>> b = np.linspace(0, 2, 4) # create an array with four equally spaced points starting with 0 and ending with 2. [124] => >>> c = a - b [125] => >>> c [126] => array([ 1. , 1.33333333, 1.66666667, 4. ]) [127] => >>> a**2 [128] => array([ 1, 4, 9, 36]) [129] => [130] => [131] => === Universal functions === [132] => [133] => >>> a = np.linspace(-np.pi, np.pi, 100) [134] => >>> b = np.sin(a) [135] => >>> c = np.cos(a) [136] => >>> [137] => >>> # Functions can take both numbers and arrays as parameters. [138] => >>> np.sin(1) [139] => 0.8414709848078965 [140] => >>> np.sin(np.array([1, 2, 3])) [141] => array([0.84147098, 0.90929743, 0.14112001]) [142] => [143] => [144] => === Linear algebra === [145] => [146] => >>> from numpy.random import rand [147] => >>> from numpy.linalg import solve, inv [148] => >>> a = np.array([[1, 2, 3], [3, 4, 6.7], [5, 9.0, 5]]) [149] => >>> a.transpose() [150] => array([[ 1. , 3. , 5. ], [151] => [ 2. , 4. , 9. ], [152] => [ 3. , 6.7, 5. ]]) [153] => >>> inv(a) [154] => array([[-2.27683616, 0.96045198, 0.07909605], [155] => [ 1.04519774, -0.56497175, 0.1299435 ], [156] => [ 0.39548023, 0.05649718, -0.11299435]]) [157] => >>> b = np.array([3, 2, 1]) [158] => >>> solve(a, b) # solve the equation ax = b [159] => array([-4.83050847, 2.13559322, 1.18644068]) [160] => >>> c = rand(3, 3) * 20 # create a 3x3 random matrix of values within [0,1] scaled by 20 [161] => >>> c [162] => array([[ 3.98732789, 2.47702609, 4.71167924], [163] => [ 9.24410671, 5.5240412 , 10.6468792 ], [164] => [ 10.38136661, 8.44968437, 15.17639591]]) [165] => >>> np.dot(a, c) # matrix multiplication [166] => array([[ 53.61964114, 38.8741616 , 71.53462537], [167] => [ 118.4935668 , 86.14012835, 158.40440712], [168] => [ 155.04043289, 104.3499231 , 195.26228855]]) [169] => >>> a @ c # Starting with Python 3.5 and NumPy 1.10 [170] => array([[ 53.61964114, 38.8741616 , 71.53462537], [171] => [ 118.4935668 , 86.14012835, 158.40440712], [172] => [ 155.04043289, 104.3499231 , 195.26228855]]) [173] => [174] => [175] => === Multidimensional arrays === [176] => [177] => >>> M = np.zeros(shape=(2, 3, 5, 7, 11)) [178] => >>> T = np.transpose(M, (4, 2, 1, 3, 0)) [179] => >>> T.shape [180] => (11, 5, 3, 7, 2) [181] => [182] => [183] => === Incorporation with OpenCV === [184] => [185] => >>> import numpy as np [186] => >>> import cv2 [187] => >>> r = np.reshape(np.arange(256*256)%256,(256,256)) # 256x256 pixel array with a horizontal gradient from 0 to 255 for the red color channel [188] => >>> g = np.zeros_like(r) # array of same size and type as r but filled with 0s for the green color channel [189] => >>> b = r.T # transposed r will give a vertical gradient for the blue color channel [190] => >>> cv2.imwrite('gradients.png', np.dstack([b,g,r])) # OpenCV images are interpreted as BGR, the depth-stacked array will be written to an 8bit RGB PNG-file called 'gradients.png' [191] => True [192] => [193] => [194] => === Nearest-neighbor search === [195] => Iterative Python algorithm and vectorized NumPy version. [196] => [197] => [198] => >>> # # # Pure iterative Python # # # [199] => >>> points = [[9,2,8],[4,7,2],[3,4,4],[5,6,9],[5,0,7],[8,2,7],[0,3,2],[7,3,0],[6,1,1],[2,9,6]] [200] => >>> qPoint = [4,5,3] [201] => >>> minIdx = -1 [202] => >>> minDist = -1 [203] => >>> for idx, point in enumerate(points): # iterate over all points [204] => ... dist = sum([(dp-dq)**2 for dp,dq in zip(point,qPoint)])**0.5 # compute the euclidean distance for each point to q [205] => ... if dist < minDist or minDist < 0: # if necessary, update minimum distance and index of the corresponding point [206] => ... minDist = dist [207] => ... minIdx = idx [208] => [209] => >>> print(f'Nearest point to q: {points[minIdx]}') [210] => Nearest point to q: [3, 4, 4] [211] => [212] => >>> # # # Equivalent NumPy vectorization # # # [213] => >>> import numpy as np [214] => >>> points = np.array([[9,2,8],[4,7,2],[3,4,4],[5,6,9],[5,0,7],[8,2,7],[0,3,2],[7,3,0],[6,1,1],[2,9,6]]) [215] => >>> qPoint = np.array([4,5,3]) [216] => >>> minIdx = np.argmin(np.linalg.norm(points-qPoint,axis=1)) # compute all euclidean distances at once and return the index of the smallest one [217] => >>> print(f'Nearest point to q: {points[minIdx]}') [218] => Nearest point to q: [3 4 4] [219] => [220] => [221] => === F2PY === [222] => Quickly wrap native code for faster scripts.{{cite web |title=F2PY docs from NumPy |url=https://numpy.org/doc/stable/f2py/usage.html?highlight=f2py |publisher=NumPy |access-date=18 April 2022}}{{cite web |last1=Worthey |first1=Guy |title=A python vs. Fortran smackdown |url=https://guyworthey.net/2022/01/03/a-python-vs-fortran-smackdown/ |website=Guy Worthey |date=3 January 2022 |publisher=Guy Worthey |access-date=18 April 2022}}{{cite web |last1=Shell |first1=Scott |title=Writing fast Fortran routines for Python |url=https://sites.engineering.ucsb.edu/~shell/che210d/f2py.pdf |website=UCSB Engineering Department |publisher=University of California, Santa Barbara |access-date=18 April 2022}} [223] => [224] => [225] => ! Python Fortran native code call example [226] => ! f2py -c -m foo *.f90 [227] => ! Compile Fortran into python named module using intent statements [228] => ! Fortran subroutines only not functions--easier than JNI with C wrapper [229] => ! requires gfortran and make [230] => subroutine ftest(a, b, n, c, d) [231] => implicit none [232] => integer, intent(in) :: a [233] => integer, intent(in) :: b [234] => integer, intent(in) :: n [235] => integer, intent(out) :: c [236] => integer, intent(out) :: d [237] => integer :: i [238] => c = 0 [239] => do i = 1, n [240] => c = a + b + c [241] => end do [242] => d = (c * n) * (-1) [243] => end subroutine ftest [244] => [245] => [246] => >>> import numpy as np [247] => >>> import foo [248] => >>> a = foo.ftest(1, 2, 3) # or c,d = instead of a.c and a.d [249] => >>> print(a) [250] => (9,-27) [251] => >>> help('foo.ftest') # foo.ftest.__doc__ [252] => [253] => [254] => == See also == [255] => * [[Array programming]] [256] => * [[List of numerical-analysis software]] [257] => * [[Theano (software)]] [258] => * [[Matplotlib]] [259] => * [[Fortran]] [260] => *[[Row- and column-major order]] [261] => [262] => == References == [263] => {{Reflist|2}} [264] => [265] => == Further reading == [266] => * {{cite book|last=Bressert|first=Eli|title=Scipy and Numpy: An Overview for Developers.|year=2012|publisher=O'Reilly |isbn=978-1-4493-0546-8}} [267] => * {{cite book |first=Wes |last=McKinney |title=Python for Data Analysis : Data Wrangling with Pandas, NumPy, and IPython |location=Sebastopol |publisher=O'Reilly |year=2017 |edition=2nd |isbn=978-1-4919-5766-0 }} [268] => * {{cite book |first=Jake |last=VanderPlas |chapter=Introduction to NumPy |pages=33–96 |title=Python Data Science Handbook: Essential Tools for Working with Data |publisher=O'Reilly |year=2016 |isbn=978-1-4919-1205-8 }} [269] => [270] => == External links == [271] => {{Sister project links [272] => |commons=Category:NumPy [273] => |b=Python Programming/numpy [274] => |v=Python/Quizzes/NumPy & Co. [275] => |wikt=no|s=no|n=no|q=no}} [276] => * {{official website}} [277] => * [https://scipy.github.io/old-wiki/pages/History_of_SciPy History of NumPy] [278] => [279] => {{SciPy ecosystem}} [280] => [281] => {{DEFAULTSORT:Numpy}} [282] => [[Category:Array programming languages]] [283] => [[Category:Articles with example Python (programming language) code]] [284] => [[Category:Free mathematics software]] [285] => [[Category:Free science software]] [286] => [[Category:Numerical analysis software for Linux]] [287] => [[Category:Numerical analysis software for macOS]] [288] => [[Category:Numerical analysis software for Windows]] [289] => [[Category:Numerical programming languages]] [290] => [[Category:Python (programming language) scientific libraries]] [291] => [[Category:Software using the BSD license]] [] => )
good wiki

NumPy

NumPy (Numerical Python) is an open-source library in Python that facilitates numerical computations. It provides support for large, multi-dimensional arrays and matrices, along with a wide range of mathematical functions to operate on these arrays.

More about us

About

It provides support for large, multi-dimensional arrays and matrices, along with a wide range of mathematical functions to operate on these arrays. NumPy is a fundamental component of the scientific computing ecosystem in Python and is extensively used in fields like data analysis, machine learning, image processing, and more. This Wikipedia page covers various aspects of NumPy, including its history, features, functionality, usage, and community involvement. It also provides information about related libraries and tools, as well as references and external links for further exploration.

Expert Team

Vivamus eget neque lacus. Pellentesque egauris ex.

Award winning agency

Lorem ipsum, dolor sit amet consectetur elitorceat .

10 Year Exp.

Pellen tesque eget, mauris lorem iupsum neque lacus.