In [2]:
import numpy as np
data1 = [6, 7.5, 8, 0, 1]
arr1 = np.array(data1)
arr1
Out[2]:
In [3]:
data2 = [[1, 2, 3, 4], [5, 6, 7, 8]]
arr2 = np.array(data2)
arr2
Out[3]:
In [4]:
print(arr2.ndim, arr2.shape)
In [5]:
print(arr1.dtype, arr2.dtype)
In [6]:
np.zeros(10)
Out[6]:
In [7]:
np.zeros((3, 6))
Out[7]:
In [8]:
np.empty((2, 3, 2))
Out[8]:
In [10]:
np.arange(15)
Out[10]:
In [11]:
np.asarray(data2)
Out[11]:
In [12]:
np.asarray(arr2)
Out[12]:
In [13]:
np.ones_like(arr2)
Out[13]:
In [14]:
np.identity(3)
Out[14]:
In [16]:
arr = np.array([1, 2, 3, 4, 5])
arr.dtype
Out[16]:
In [18]:
float_arr = arr.astype('float32')
float_arr.dtype
Out[18]:
In [19]:
float_arr[0] = 0
print(float_arr, '\n', arr)
In [20]:
numeric_string = np.array(['1.25', '-9.6', '42'], dtype = np.string_)
numeric_string.astype(float)
Out[20]:
In [25]:
arr = np.array([[1, 2, 3], [4, 5, 6]])
arr
Out[25]:
In [26]:
arr * arr
Out[26]:
In [27]:
arr - arr
Out[27]:
In [28]:
1 / arr
Out[28]:
In [29]:
arr ** 0.5
Out[29]:
In [31]:
arr = np.arange(10)
arr
Out[31]:
In [32]:
arr[5]
Out[32]:
In [33]:
arr[5:8]
Out[33]:
In [34]:
arr[5:8] = 12
arr
Out[34]:
In [35]:
arr_slice = arr[5:8]
arr_slice[1] = 12345
arr
Out[35]:
In [36]:
arr_slice[:] = 64
arr
Out[36]:
In [37]:
arr2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
arr2d[2]
Out[37]:
In [38]:
arr2d[0][2]
Out[38]:
In [39]:
arr2d[0, 2]
Out[39]:
In [40]:
arr2d
Out[40]:
In [41]:
arr2d[:2]
Out[41]:
In [42]:
arr2d[:2, 1:]
Out[42]:
In [43]:
arr2d[1, :2]
Out[43]:
In [45]:
arr2d[2, :1]
Out[45]:
In [46]:
arr2d[:, :1]
Out[46]:
In [47]:
arr2d[:2, 1:] = 0
arr2d
Out[47]:
In [48]:
names = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'])
data = np.random.randn(7, 4)
In [49]:
names
Out[49]:
In [50]:
data
Out[50]:
In [51]:
names == 'Bob'
Out[51]:
In [52]:
data[names == 'Bob']
Out[52]:
In [53]:
data[names == 'Bob', 3]
Out[53]:
In [54]:
names != 'Bob'
Out[54]:
In [55]:
data[names != 'Bob']
Out[55]:
In [56]:
data[-(names == 'Bob')]
Out[56]:
In [57]:
mask = (names == 'Bob') | (names == 'Will')
mask
Out[57]:
In [58]:
data[mask]
Out[58]:
In [59]:
data[data < 0] = 0
data
Out[59]:
In [60]:
data[names != 'Joe'] = 7
data
Out[60]:
In [61]:
arr = np.empty((8, 4))
for i in range(8):
arr[i] = i
arr
Out[61]:
In [62]:
arr[[4, 3, 0, 6]]
Out[62]:
In [63]:
arr[[-3, -5, -7]]
Out[63]:
In [65]:
arr = np.arange(32).reshape((8, 4))
arr
Out[65]:
In [66]:
arr[[1, 5, 7, 2], [0, 3, 1, 2]]
Out[66]:
In [67]:
arr[[1, 5, 7, 2]][:, [0, 3, 1, 2]]
Out[67]:
In [68]:
arr[np.ix_([1, 5, 7, 2], [0, 3, 1, 2])]
Out[68]:
In [70]:
arr = np.arange(15).reshape((5, 3))
arr
Out[70]:
In [71]:
np.dot(arr.T, arr)
Out[71]:
In [73]:
arr = np.arange(16).reshape((2, 2, 4))
arr
Out[73]:
In [75]:
arr.transpose((1, 0, 2))
Out[75]:
In [76]:
arr = np.arange(10)
np.sqrt(arr)
Out[76]:
In [77]:
np.exp(arr)
Out[77]:
In [78]:
x = np.random.rand(8)
y = np.random.rand(8)
x
Out[78]:
In [79]:
y
Out[79]:
In [80]:
np.maximum(x, y)
Out[80]:
In [81]:
arr = np.random.rand(7) * 5
arr
Out[81]:
In [82]:
np.modf(arr)
Out[82]:
In [83]:
points = np.arange(-5, 5, 0.01)
xs, ys = np.meshgrid(points, points)
xs
Out[83]:
In [84]:
ys
Out[84]:
In [85]:
import matplotlib.pyplot as plt
z = np.sqrt(xs ** 2 + ys ** 2)
z
Out[85]:
In [94]:
im = plt.imshow(z, cmap = plt.cm.gray)
plt.colorbar(im)
plt.title('Image plot of $\sqrt{x^2 + y^2}$ for a grid of values')
plt.show()
In [96]:
x = np.arange(1.1, 1.6, 0.1)
y = np.arange(2.1, 2.6, 0.1)
cond = np.array([True, False, True, True, False])
results = [(x if c else y) for x, y, c in zip(x, y, cond)]
results
Out[96]:
In [97]:
np.where(cond, x, y)
Out[97]:
In [100]:
arr = np.random.randn(4, 4)
arr
Out[100]:
In [101]:
arr = np.where(arr > 0, 2, -2)
arr
Out[101]:
In [102]:
arr = np.random.randn(5, 4)
arr.mean()
Out[102]:
In [103]:
np.mean(arr)
Out[103]:
In [104]:
arr.sum()
Out[104]:
In [105]:
arr
Out[105]:
In [106]:
arr.mean(axis = 1)
Out[106]:
In [107]:
arr.mean(axis = 0)
Out[107]:
In [108]:
np.cumsum(arr, axis = 0)
Out[108]:
In [109]:
np.unique(names)
Out[109]:
In [110]:
ints = np.array([3, 3, 3, 2, 2, 1, 1, 4, 4])
np.unique(ints)
Out[110]:
In [111]:
values = np.array([6, 0, 0, 3, 2, 5, 6])
np.in1d(values, [2, 3, 6])
Out[111]:
In [112]:
arr = np.arange(10)
np.save('some_array', arr)
In [113]:
np.load('some_array.npy')
Out[113]:
In [114]:
x = np.arange(6).reshape((2, 3))
y = np.arange(6, 12).reshape((3, 2))
In [115]:
x
Out[115]:
In [116]:
y
Out[116]:
In [117]:
np.dot(x, y)
Out[117]:
In [118]:
from numpy.linalg import inv, qr
x = np.random.randn(5, 5)
mat = np.dot(x.T, x)
inv(mat)
Out[118]:
In [119]:
np.dot(mat, inv(mat))
Out[119]:
In [123]:
np.dot(mat, inv(mat)).astype('int64')
Out[123]:
In [128]:
nsteps = 1000
draws = np.random.randint(-1, 2, size = nsteps)
steps = np.where(draws > 0, 1, -1)
walk = steps.cumsum()
walk
Out[128]:
In [129]:
walk.min()
Out[129]:
In [130]:
walk.max()
Out[130]:
In [131]:
(np.abs(walk) >= 10).argmax()
Out[131]:
In [133]:
nwalks = 5000
nsteps = 1000
draws = np.random.randint(0, 2, size = (nwalks, nsteps))
steps = np.where(draws > 0, 1, -1)
walks = steps.cumsum(axis = 1)
walks
Out[133]:
In [134]:
walks.max()
Out[134]:
In [135]:
walks.min()
Out[135]:
In [136]:
hits30 = (np.abs(walks) >= 30).any(axis = 1)
hits30
Out[136]:
In [137]:
hits30.sum()
Out[137]:
In [138]:
crossing_times = (np.abs(walks[hits30]) >= 30).argmax(axis = 1)
crossing_times
Out[138]:
In [139]:
crossing_times.mean()
Out[139]:
In [ ]: