NumPy
NumPy is the fundamental package for scientific computing with Python.
Basics
One of the most commonly used functions of NumPy are NumPy arrays: The essential difference between lists and NumPy arrays is functionality and speed. lists give you basic operation, but NumPy adds basic statistics, linear algebra, histograms, etc.
The most important difference for data science is the ability to do element-wise calculations with NumPy arrays.
axis 0
always refers to row
axis 1
always refers to column
Operator |
Description |
Documentation |
np.array([1,2,3]) |
1d array |
link |
np.array([(1,2,3),(4,5,6)]) |
2d array |
see above |
np.arange(start,stop,step) |
range array |
link |
Operators |
Description |
Documentation |
np.linspace(0,2,9) |
Add evenly spaced values btw interval to array of length |
link |
np.zeros((1,2)) |
Create and array filled with zeros |
link |
np.ones((1,2)) |
Creates an array filled with ones |
link |
np.random.randint(0, 5, (5,5)) |
Creates random array |
link |
np.empty((2,2)) |
Creates an empty array |
link |
Examples
Array
Array Properties
Syntax |
Description |
Documentation |
array.shape |
Dimensions (Rows,Columns) |
link |
len(array) |
Length of Array |
link |
array.ndim |
Number of Array Dimensions |
link |
array.size |
Number of Array Elements |
link |
array.dtype |
Data Type |
link |
array.astype(type) |
Converts to Data Type |
link |
type(array) |
Type of Array |
link |
Copying
Operators |
Descriptions |
Documentation |
np.copy(array) |
Creates copy of array |
link |
other = array.copy() |
Creates deep copy of array |
see above |
Array Manipulation Routines
Slicing and Subsetting
Operator |
Description |
Documentation |
array[i] |
1d array at index i |
link |
array[i,j] |
2d array at index[i][j] |
see above |
array[i<4] |
Boolean Indexing |
see above |
array[0:3] |
Select items of index 0, 1 and 2 |
see above |
array[0:2,1] |
Select items of rows 0 and 1 at column 1 |
see above |
array[:1] |
Select items of row 0 (equals array[0:1, :]) |
see above |
array[1:2, :] |
Select items of row 1 |
see above |
[comment]: <> ( |
array[1,...] |
equals array[1,:,:] |
array[ : :-1] |
Reverses array |
see above |
Examples
Combining Arrays
Operator |
Description |
Documentation |
np.concatenate((a,b),axis=0) |
Concatenates 2 arrays, adds to end |
link |
np.vstack((a,b)) |
Stack array row-wise |
link |
np.hstack((a,b)) |
Stack array column wise |
link |
Example
Shaping Arrays
Operator |
Description |
Documentation |
other = ndarray.flatten() |
Flattens a 2d array to 1d |
link |
ravel |
Return a contiguous flattened array |
link |
reshape |
reshape an array |
link |
resize |
Return a new array with the specified shape |
link |
array = np.transpose(other) array.T |
Transpose array |
link |
Mathematics
Operations
Operator |
Description |
Documentation |
np.add(x,y)
x + y |
Addition |
link |
np.substract(x,y)
x - y |
Subtraction |
link |
np.divide(x,y)
x / y |
Division |
link |
np.multiply(x,y)
x * y |
Multiplication |
link |
np.sqrt(x) |
Square Root |
link |
np.sin(x) |
Element-wise sine |
link |
np.cos(x) |
Element-wise cosine |
link |
np.log(x) |
Element-wise natural log |
link |
np.dot(x,y) |
Dot product, x @ y |
link |
Remember: NumPy array operations work element-wise.
Example
Comparison
Operator |
Description |
Documentation |
np.array_equal(x,y) |
Array-wise comparison |
link |
Example
More (Reduction)
Operator |
Description |
Documentation |
array.sum() |
Array-wise sum |
link |
array.min() |
Array-wise minimum value |
link |
array.max(axis=0) |
Maximum value of specified axis |
|
Rules for broadcasting
In NumPy
, broadcasting adheres to a strict set of regulations that govern how two arrays
interact with one another. These rules are as follows:
- When the number of dimensions between two
arrays
differs, the array
with fewer dimensions is padded with ones on its leading (left) side to match the number of dimensions of the other array
.
- If the shape of the two
arrays
doesn't match in any dimension, the array
with a shape of 1 in that dimension is expanded to match the shape of the other array
.
- If the sizes of the
arrays
conflict in any dimension and neither is equal to 1, an error is raised.
Keywords
- Array-Oriented Programming (陣列導向程式設計): Working with whole matrices or arrays of data at once, so you don’t have to write a loop for every item.
- Functional-Style Programming (函式風格程式設計):A paradigm that builds programs by composing pure functions—functions that don’t change external state or data.
- Internal iteration (內部迭代):Letting a built-in method or function do the looping for you instead of writing the
for
loop yourself.
- Chain Method (串接呼叫):Linking several operations together in one line because each step returns the same item, for example:
text.strip().lower().split()
.
- Fancy Indexing (進階索引):Picking out multiple items from a list or array using a list of positions or a mask of True/False values instead of one index at a time.
- Copies (複本):Making a totally new version of a data structure so you can change it without affecting the original.
- Views (檢視): Making a "window" into the original data so that if you change the view, you also change the original.
- Reduction (歸約):Turning a list of values into one single result, like adding everything up or finding the highest value.
- Vectorization (向量化):Performing operations on entire arrays instead of individual elements to greatly speed up computations, commonly used in NumPy.
- Broadcasting (廣播機制):Allowing operations between arrays of different shapes by “stretching” the smaller one to match the larger’s dimensions.
- Universal functions (通用函式):NumPy’s element-wise functions implemented in C for fast array operations, avoiding Python-level loops.
- Statically typed (靜態型別):A language characteristic where variable types are checked at compile time and cannot change, requiring explicit type declarations (e.g., C, Java).
- Compiled routines (編譯後函式):Functions translated into machine code before execution for faster performance compared to interpreting code line by line.