All about NumPy

Aditi Pateriya
3 min readJul 2, 2021

Introduction to NumPy

what is NumPy?

NumPy stands for Numerical Python. It is a standard library containing multidimensional array objects and various tools for working with arrays. The core of NumPy is code optimized in C language.

Why NumPy arrays?

.Here are some features that make NumPy a preference:

.Numpy offers comprehensive computing tools like mathematical functions, random no generators, etc

. It's an Open source

.Easy to use — high-level syntax, makes it easy for anyone to understand.

.Interoperable-supports a wide range of hardware and computing platforms.

NumPy arra

ys are better than Python lists in the following ways:
. Size — Numpy data structures take up less space

.Performance — they have a need for speed and are faster than lists

.Functionality — SciPy and NumPy have optimized functions such as linear algebra operations built-in.

Limitations of NumPy

  • Require a contiguous allocation of memory: Insertion and deletion operations become costly as data is stored in contiguous memory locations as shifting it requires shifting.
  • Using “nan” in Numpy: “Nan” stands for “not a number”. It was designed to address the problem of missing values. NumPy itself supports “nan” but lack of cross-platform support within Python makes it difficult for the user.

Installation requirements

The only prerequisite for installing NumPy is Python itself. The two main tools that install Python packages are pip and conda.

If you use conda,

# Best practice, use an environment rather than install in the base env
conda create -n my-env
conda activate my-env
# If you want to install from conda-forge
conda config --env --add channels conda-forge
# The actual install command
conda install numpy

If you use pip,

pip install numpy

NumPy ndArray Objects

NumPy’s array class is called ndarray. It is also known by the name array. In NumPy dimension of the array is called axes and all elements can be indexed by a tuple of positive integers.

Array indexing and slicing — Numpy offers may ways to do indexing that are :

  • Slicing: Just like lists in python, NumPy arrays can be sliced. As arrays can be multidimensional, you need to specify a slice for each dimension of the array.
  • Integer array indexing: In this method, lists are passed for indexing for each dimension. One-to-one mapping of corresponding elements is done to construct a new arbitrary array.
  • Boolean array indexing: This method is used when we want to pick elements from array which satisfy some condition.

Memory layout of ndArray

image by Eli Bendersky’s website

An instance of class ndarray consists of a contiguous one-dimensional segment of computer memory (owned by the array, or by some other object), combined with an indexing scheme that maps N integers into the location of an item in the block.

Views and Copies

Copy is essentially a feature which creates a copy of the original array and any changes made to the copy will not affect the original values. View on the other hand allows you to make the changes in the original array.

import numpy as np

arr = np.array([1, 2, 3])
x = arr.view()
x[0] = 31

print(arr)
print(x)
output
[31,2,3]
[31,2,3]
import numpy as np

arr = np.array([1, 2, 3])

x = arr.copy()
y = arr.view()

print(x.base)
print(y.base)

Every NumPy array has the attribute base that returns None if the array owns the data.

Creating an array

We can create a NumPy ndarray object by using the array() function.

import numpy as np

arr = np.array([1, 2, 3, 4, 5])

print(arr)
output
[1,2,3,4,5]

To create an ndarray, we can pass a list, tuple or any array-like object into the array() method, and it will be converted into an ndarray.

Here’s how

import numpy as np

arr = np.array((1, 2, 3, 4, 5)) #tuple being passed

print(arr)
output
[1,2,3,4,5]

Data types of an array in NumPy

NumPy has some extra data types, and refer to data types with one character, like i for integers, u for unsigned integers etc.

Below is a list of all data types in NumPy and the characters used to represent them.

  • i - integer
  • b - boolean
  • u - unsigned integer
  • f - float
  • c - complex float
  • m - timedelta
  • M - datetime
  • O - object
  • S - string
  • U - unicode string
  • V - fixed chunk of memory for other type ( void )

Thank you for delving into the absolute basics of NumPy with me!

--

--

Aditi Pateriya

A curious learner , an engineer by profession , exploring the world through writings