In [9]:
# Basic NP arrays
import numpy as np
my_list1 = [1,2,3,4]
my_array1 = np.array(my_list1)
my_array1
Out[9]:
In [2]:
my_list2 = [11,22,33,44]
my_lists = [my_list1,my_list2]
my_array2 = np.array(my_lists)
my_array2
Out[2]:
In [3]:
my_array2.shape
Out[3]:
In [4]:
my_array2.dtype
Out[4]:
In [5]:
np.zeros(5)
Out[5]:
In [6]:
np.eye(5)
Out[6]:
In [7]:
np.arange(5,50,2)
Out[7]:
In [11]:
# Scalars and Arrays
arr1 = np.array([[1,2,3,4],[8,9,10,11]])
arr1
Out[11]:
In [12]:
arr1*arr1
Out[12]:
In [13]:
arr1-arr1
Out[13]:
In [14]:
1/arr1
Out[14]:
In [15]:
arr1 ** 3
Out[15]:
In [16]:
# Indexing Arrays
arr = np.arange(0,11)
arr
Out[16]:
In [17]:
arr[1:5]
Out[17]:
In [18]:
arr[0:5]
Out[18]:
In [19]:
arr[0:5] = 100
In [20]:
arr
Out[20]:
In [22]:
slice_of_arr = arr[0:6]
slice_of_arr
Out[22]:
In [23]:
slice_of_arr[:] = 99
slice_of_arr
Out[23]:
In [27]:
# Note: Objects treated the same way as Java to save memory, need deep copies then use this
arr_copy = arr.copy()
arr_copy[:] = 88
print(arr_copy)
print(arr)
In [28]:
arr_2d = np.array(([5,10,15],[20,25,30],[35,40,45]))
arr_2d[1]
Out[28]:
In [30]:
arr_2d[1][2]
Out[30]:
In [31]:
arr_2d[:2,1:]
Out[31]:
In [34]:
arr2d = np.ones((10,10))
arr2d
Out[34]:
In [35]:
arr_length = arr2d.shape[1]
arr_length
Out[35]:
In [37]:
for i in range(arr_length):
arr2d[i] = i
arr2d
Out[37]:
In [38]:
# Fancy indexing
arr2d[[2,4,6,8]]
Out[38]:
In [41]:
# Array Transposition
arr = np.arange(50).reshape((10,5))
arr
Out[41]:
In [42]:
arr.T
Out[42]:
In [43]:
np.dot(arr.T,arr)
Out[43]:
In [44]:
arr3d = np.arange(50).reshape((5,5,2))
arr3d
Out[44]:
In [45]:
arr3d.transpose((1,0,2))
arr3d
Out[45]:
In [46]:
arr = np.array([[1,2,3]])
arr
Out[46]:
In [48]:
arr.swapaxes(0,1)
Out[48]:
In [49]:
# Universal Array Functions
arr = np.arange(11)
arr
Out[49]:
In [50]:
np.sqrt(arr)
Out[50]:
In [51]:
np.exp(arr)
Out[51]:
In [52]:
A = np.random.randn(10)
A
Out[52]:
In [54]:
B = np.random.randn(10)
B
Out[54]:
In [55]:
## Binary Functions - go to scipi docs for more info about functions
np.add(A,B)
Out[55]:
In [56]:
np.maximum(A,B)
Out[56]:
In [57]:
# Array Processing
import matplotlib.pyplot as plt
%matplotlib inline
In [58]:
points = np.arange(-5,5,0.01)
In [59]:
dx,dy = np.meshgrid(points,points)
In [60]:
dx
Out[60]:
In [61]:
dy
Out[61]:
In [62]:
z = (np.sin(dx) + np.sin(dy))
z
Out[62]:
In [63]:
plt.imshow(z)
Out[63]:
In [64]:
plt.imshow(z)
plt.colorbar()
plt.title('plot for sin(x) + sin(y)')
Out[64]:
In [65]:
## Numpy where
A = np.array([1,2,3,4])
B = np.array([100,200,300,400])
condition = np.array([True, True, False, False])
answer = [(A_val if cond else B_val) for A_val,B_val,cond in zip(A,B,condition)]
answer
Out[65]:
In [66]:
answer2 = np.where(condition,A,B)
answer2
Out[66]:
In [67]:
from numpy.random import randn
arr = randn(5,5)
arr
Out[67]:
In [68]:
np.where(arr<0,0,arr)
Out[68]:
In [69]:
# Awesome!!!!
In [71]:
arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
arr.sum()
Out[71]:
In [72]:
arr.sum(0)
Out[72]:
In [73]:
arr.mean()
Out[73]:
In [74]:
arr.std()
Out[74]:
In [75]:
arr.var()
Out[75]:
In [76]:
bool_arr = np.array([True,False,True])
bool_arr.any()
Out[76]:
In [79]:
bool_arr.all()
Out[79]:
In [80]:
## Sort
arr = randn(5)
arr.sort()
arr
Out[80]:
In [81]:
countries = np.array(['France','Germany','USA','France'])
np.unique(countries)
Out[81]:
In [83]:
np.in1d(['France','Mexico'], countries)
Out[83]:
In [84]:
# Array Input and Output
arr = np.arange(5)
np.save('myarray', arr)
arr = np.arange(10)
print(arr)
np.load('myarray.npy')
Out[84]:
In [ ]: