In [1]:
%autosave 2
%matplotlib inline
import numpy as np
import pandas


Autosaving every 2 seconds

In [5]:
a = np.array([[1,2,3],[4,5,6]], dtype=np.float)
print(a.shape)


(2, 3)

In [8]:
zeros = np.zeros((3,3,3), dtype=np.complex)
print(zeros)
print(zeros.shape)


[[[ 0.+0.j  0.+0.j  0.+0.j]
  [ 0.+0.j  0.+0.j  0.+0.j]
  [ 0.+0.j  0.+0.j  0.+0.j]]

 [[ 0.+0.j  0.+0.j  0.+0.j]
  [ 0.+0.j  0.+0.j  0.+0.j]
  [ 0.+0.j  0.+0.j  0.+0.j]]

 [[ 0.+0.j  0.+0.j  0.+0.j]
  [ 0.+0.j  0.+0.j  0.+0.j]
  [ 0.+0.j  0.+0.j  0.+0.j]]]
(3, 3, 3)

In [17]:
a = np.array([1,2,3], ndmin=2)
print(a)
print(a.shape)
a[0][0]


[[1 2 3]]
(1, 3)
Out[17]:
1

In [14]:
np.array([[1,2,3]], ndmin=1)


Out[14]:
array([[1, 2, 3]])

In [24]:
a = np.array([[1,2,3],[4,5,6]])
print(a)
print(a[1][2])
print(a[1,2])
print(a[:,0])


[[1 2 3]
 [4 5 6]]
6
6
[1 4]

In [35]:
a = np.array([1,2,3], ndmin=2)
print(a.T)
print(a[0].T)


[[1]
 [2]
 [3]]
[1 2 3]

In [41]:
a = np.arange(16)
b = a.reshape((4,4))
print(a is b)
print(b.flags.owndata)
c = b.T
print(b)
print(c)
print(c.flags.owndata)
print(a,)


False
False
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]
[[ 0  4  8 12]
 [ 1  5  9 13]
 [ 2  6 10 14]
 [ 3  7 11 15]]
False

In [44]:
a = np.arange(16)
a_view = a.reshape(4,4)
print(a.shape)
print(a_view.shape)
a_view[2] = -1
print(a)
print(a is a_view)


(16,)
(4, 4)
[ 0  1  2  3  4  5  6  7 -1 -1 -1 -1 12 13 14 15]
False

In [47]:
a = np.arange(16)
print(a.shape)
print(a.resize(4,4))
print(a)
a.shape = 8, 1, 2
print(a)


(16,)
None
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]
[[[ 0  1]]

 [[ 2  3]]

 [[ 4  5]]

 [[ 6  7]]

 [[ 8  9]]

 [[10 11]]

 [[12 13]]

 [[14 15]]]

In [49]:
a = np.arange(16)
b = a.reshape(2, -1)
print(b.shape)


(2, 8)

In [51]:
a = np.arange(16).reshape(2,2,2,2)
b = a[1,:,:,1]
print(b)
c = a[1,...,1]
print(c)


[[ 9 11]
 [13 15]]
[[ 9 11]
 [13 15]]

In [53]:
a = np.arange(16)
b = a[:,np.newaxis]
print(b)
print(b.shape)


[[ 0]
 [ 1]
 [ 2]
 [ 3]
 [ 4]
 [ 5]
 [ 6]
 [ 7]
 [ 8]
 [ 9]
 [10]
 [11]
 [12]
 [13]
 [14]
 [15]]
(16, 1)

In [60]:
a = np.arange(16).reshape(4,4)
index = [[0,1], [2,3]]
print(a[index])


[2 7]

In [68]:
a = np.arange(16).reshape(4,4)
print(a)
id1 = [0, 1]
id2 = [2, 3]
print(a[id1, id2])


[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]
[2 7]

In [75]:
a = np.arange(16).reshape(4,4)
index_tuple = (0,0)
index_list = np.array([0,0])
print(a[index_tuple] == a[0,0])
print(a[index_list])


True
[[0 1 2 3]
 [0 1 2 3]]

In [76]:
a = np.arange(16).reshape(4,4)
index_tuple = (0, 0) + (np.newaxis,) * 5
print(a[index_tuple])


[[[[[0]]]]]

In [85]:
a = np.arange(16).reshape(4,4)
for x in a.flat:
    print(x)
for x in a.reshape(-1):
    print(x)


0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

In [89]:
a = np.arange(16).reshape(4,4)
b = np.random.rand(4,4)
for i, x in enumerate(a):
    print(i, x)
for i, x in np.ndenumerate(a):
    print(i, x, b[i])


0 [0 1 2 3]
1 [4 5 6 7]
2 [ 8  9 10 11]
3 [12 13 14 15]
(0, 0) 0 0.0916581095043
(0, 1) 1 0.669594912051
(0, 2) 2 0.70709689671
(0, 3) 3 0.715316000432
(1, 0) 4 0.764312266161
(1, 1) 5 0.534424437879
(1, 2) 6 0.726511158347
(1, 3) 7 0.265557117277
(2, 0) 8 0.00428223698882
(2, 1) 9 0.751926939527
(2, 2) 10 0.320827081272
(2, 3) 11 0.745953853208
(3, 0) 12 0.441287674
(3, 1) 13 0.670932798677
(3, 2) 14 0.664180840662
(3, 3) 15 0.020804245602

In [91]:
for i in np.ndindex(3,2):
    print(i)


(0, 0)
(0, 1)
(1, 0)
(1, 1)
(2, 0)
(2, 1)

In [92]:
import math

In [93]:
math.sin(1)


Out[93]:
0.8414709848078965

In [94]:
np.sin(np.arange(16))


Out[94]:
array([ 0.        ,  0.84147098,  0.90929743,  0.14112001, -0.7568025 ,
       -0.95892427, -0.2794155 ,  0.6569866 ,  0.98935825,  0.41211849,
       -0.54402111, -0.99999021, -0.53657292,  0.42016704,  0.99060736,
        0.65028784])

In [95]:
np.sin(1)


Out[95]:
0.8414709848078965

In [96]:
np.sum(np.arange(16))


Out[96]:
120

In [97]:
a = np.arange(16)
a.sum()


Out[97]:
120

In [103]:
a = np.arange(16).reshape(4,4)
print(a.sum(axis=0))
print(a)


[24 28 32 36]
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]

In [105]:
np.gradient(np.arange(3))


Out[105]:
array([ 1.,  1.,  1.])

In [106]:
np.diff(np.arange(3))


Out[106]:
array([1, 1])

In [115]:
a = np.arange(4).reshape(2,2)
b = np.arange(5,9).reshape(2,2)
print(a * b)
print(np.dot(a, b))
print(a @ b)


[[ 0  6]
 [14 24]]
[[ 7  8]
 [31 36]]
[[ 7  8]
 [31 36]]

In [116]:
np.linalg.det(a)


Out[116]:
-2.0

In [117]:
np.sqrt(-1.0)


/opt/conda/lib/python3.6/site-packages/ipykernel_launcher.py:1: RuntimeWarning: invalid value encountered in sqrt
  """Entry point for launching an IPython kernel.
Out[117]:
nan

In [118]:
np.emath.sqrt(-1)


Out[118]:
1j

In [ ]: