Working With Numpy Matrices: A Handy First Reference
This introductory tutorial does a great job of outlining the most common Numpy array creation and manipulation functionality. A good post to keep handy while taking your first steps in Numpy, or to use as a handy reminder.
By Ieva Zarina, Software Developer, Nordigen.
At the beginning when I started working with natural language processing, I used the default Python lists. But soon enough with bigger experiments and more data I run out of RAM. Python lists are not optimized for memory space so onto Numpy.
Numpy is the de facto ndarray tool for the Python scientific ecosystem.
Numpy arrays are much like in C – generally you create the array the size you need beforehand and then fill it. Merging, appending is not recommended as Numpy will create one empty array in the size of arrays being merged and then just copy the contents into it.
Here are some ways Numpy arrays (ndarray) can be manipulated:
import numpy as np
list= [1, 2, 3]
c = np.asarray(list)
Create an ndarray in the size you need filled with ones, zeros or random values:
# Array items as ndarray
c = np.array([1, 2, 3])
# A 2x2 2d array shape for the arrays in the format (rows, columns)
shape = (2, 2)
# Random values
c = np.empty(shape)
d = np.ones(shape)
e = np.zeros(shape)
# Creating ndarray from list
c = np.array([[1., 2.,],[1., 2.]])
# Creating new array in the shape of c, filled with 0
d = np.empty_like(c)
Sometimes I need to select only a part of all columns or rows in a 2d matrix. For example, matrices:
a = np.asarray([[1,1,2,3,4], # 1st row
[2,6,7,8,9], # 2nd row
[3,6,7,8,9], # 3rd row
[4,6,7,8,9], # 4th row
[5,6,7,8,9] # 5th row
b = np.asarray([[1,1],
# Select row in the format a[start:end], if start or end omitted it means all range.
y = a[:1] # 1st row
y = a[0:1] # 1st row
y = a[2:5] # select rows from 3rd to 5th row# Select column in the format a[start:end, column_number]
x = a[:, -1] # -1 means first from the end
x = a[:,1:3] # select cols from 2nd col until 3rd
Merging numpy arrays is not advised because because internally numpy will create empty big array and then copy the contents into it. It would be best to create the intended size at the beginning and then just fill it up. However, sometimes you cannot avoid merging. In this case, numpy has some built-in functions:
Without the default float, numpy can hold all the commontypes. If any of numbers in array is float, all numbers will be converted to float:
a = np.array([1, 2, 3.3])
# >> [ 1. 2. 3.3]
But you can easily cast the type to int, float or other:
a = np.array([1, 2, 3.3])
# >> [ 1. 2. 3.3]print a.astype(int)# >> [1 2 3]
String arrays need to be created as arrays with the type S1 for string with length 1, S2 for length of 2 and so on . numpy.chararray() creates array with this type. You need to specify the shape of the array and itemsize – the length of each string.
chararray = np.chararray([3,3], itemsize=3)
chararray[:] ='abc'# assing value to all fields print chararray
#>> [['abc' 'abc' 'abc']# ['abc' 'abc' 'abc']# ['abc' 'abc' 'abc']]