In [8]:
%autosave 2

import numpy as np
Autosaving every 2 seconds
In [10]:
%%timeit a = np.arange(10000)

b = a.cumsum()
np.std(b, ddof=1)
149 µs ± 823 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
In [11]:
a = np.arange(16).reshape(4, 4)
a
Out[11]:
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15]])
In [12]:
a[1, 2]
Out[12]:
6
In [13]:
a[1:, :-1]
Out[13]:
array([[ 4,  5,  6],
       [ 8,  9, 10],
       [12, 13, 14]])
In [14]:
a[a % 2 == 0]
Out[14]:
array([ 0,  2,  4,  6,  8, 10, 12, 14])
In [21]:
b = a[0]
a[b % 3 == 0][[1, 0], [3, 2]]
Out[21]:
array([15,  2])
In [23]:
a = np.arange(16)
np.sum(a[a % 2 == 0])
Out[23]:
56
In [28]:
a = np.arange(16).reshape(4, -1)
a[np.arange(a.shape[0]), np.arange(a.shape[1])]
Out[28]:
array([ 0,  5, 10, 15])
In [31]:
np.diag(a)
Out[31]:
array([ 0,  5, 10, 15])
In [32]:
np.diag(a, k=1)
Out[32]:
array([ 1,  6, 11])
In [33]:
np.diag_indices_from(a)
Out[33]:
(array([0, 1, 2, 3]), array([0, 1, 2, 3]))
In [34]:
np.diag_indices(4)
Out[34]:
(array([0, 1, 2, 3]), array([0, 1, 2, 3]))
In [37]:
a[np.tril_indices_from(a)] = 0
In [38]:
a
Out[38]:
array([[ 0,  1,  2,  3],
       [ 0,  0,  6,  7],
       [ 0,  0,  0, 11],
       [ 0,  0,  0,  0]])
In [39]:
a = np.arange(10, dtype=float)
b = np.ones(10, dtype=float)
In [40]:
np.hstack([a, b])
Out[40]:
array([0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 1., 1., 1., 1., 1., 1., 1.,
       1., 1., 1.])
In [47]:
A = np.arange(10, dtype=float).reshape(5, 2)
B = np.ones((5, 2), dtype=float)
print(A)
print(B)
[[0. 1.]
 [2. 3.]
 [4. 5.]
 [6. 7.]
 [8. 9.]]
[[1. 1.]
 [1. 1.]
 [1. 1.]
 [1. 1.]
 [1. 1.]]
In [46]:
np.hstack([A, B])
Out[46]:
array([[0., 1., 1., 1.],
       [2., 3., 1., 1.],
       [4., 5., 1., 1.],
       [6., 7., 1., 1.],
       [8., 9., 1., 1.]])
In [48]:
np.vstack([a, b])
Out[48]:
array([[0., 1., 2., 3., 4., 5., 6., 7., 8., 9.],
       [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]])
In [49]:
np.vstack([A, B])
Out[49]:
array([[0., 1.],
       [2., 3.],
       [4., 5.],
       [6., 7.],
       [8., 9.],
       [1., 1.],
       [1., 1.],
       [1., 1.],
       [1., 1.],
       [1., 1.]])
In [50]:
np.concatenate([a, b])
Out[50]:
array([0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 1., 1., 1., 1., 1., 1., 1.,
       1., 1., 1.])
In [51]:
np.concatenate([A, B])
Out[51]:
array([[0., 1.],
       [2., 3.],
       [4., 5.],
       [6., 7.],
       [8., 9.],
       [1., 1.],
       [1., 1.],
       [1., 1.],
       [1., 1.],
       [1., 1.]])
In [52]:
np.stack([a, b], axis=0)
Out[52]:
array([[0., 1., 2., 3., 4., 5., 6., 7., 8., 9.],
       [1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]])
In [53]:
np.stack([a, b], axis=1)
Out[53]:
array([[0., 1.],
       [1., 1.],
       [2., 1.],
       [3., 1.],
       [4., 1.],
       [5., 1.],
       [6., 1.],
       [7., 1.],
       [8., 1.],
       [9., 1.]])
In [55]:
np.stack([a, b], axis=-1)
Out[55]:
array([[0., 1.],
       [1., 1.],
       [2., 1.],
       [3., 1.],
       [4., 1.],
       [5., 1.],
       [6., 1.],
       [7., 1.],
       [8., 1.],
       [9., 1.]])
In [60]:
%%timeit lines = [np.full(16, i) for i in range(128)]
np.vstack(lines)
179 µs ± 650 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
In [62]:
%%timeit lines = [np.full(16, i) for i in range(128)]
x = lines[0]
for y in lines[1:]:
    x = np.vstack([x, y])
1.16 ms ± 20.7 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
In [67]:
?np.block
In [68]:
np.r_[np.ones(10), 2]
Out[68]:
array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 2.])
In [69]:
np.r_[0:10]
Out[69]:
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
In [70]:
np.r_[0:10:2]
Out[70]:
array([0, 2, 4, 6, 8])
In [71]:
np.r_[0.0:100.0:5.0j]
Out[71]:
array([  0.,  25.,  50.,  75., 100.])
In [73]:
a, step = np.linspace(0.0, 10.0, 11, retstep=True)
print(a)
print(step)
[ 0.  1.  2.  3.  4.  5.  6.  7.  8.  9. 10.]
1.0
In [79]:
np.arange(0, 9./7., 1./7.)
Out[79]:
array([0.        , 0.14285714, 0.28571429, 0.42857143, 0.57142857,
       0.71428571, 0.85714286, 1.        , 1.14285714, 1.28571429])
In [80]:
np.linspace(0.0, 8./7., 9)
Out[80]:
array([0.        , 0.14285714, 0.28571429, 0.42857143, 0.57142857,
       0.71428571, 0.85714286, 1.        , 1.14285714])
In [81]:
np.logspace(0.0, 2.0, 3)
Out[81]:
array([  1.,  10., 100.])
In [83]:
np.r_[1:10:3, 0.5:1.5:11j, 10, np.arange(10)**2]
Out[83]:
array([ 1. ,  4. ,  7. ,  0.5,  0.6,  0.7,  0.8,  0.9,  1. ,  1.1,  1.2,
        1.3,  1.4,  1.5, 10. ,  0. ,  1. ,  4. ,  9. , 16. , 25. , 36. ,
       49. , 64. , 81. ])
In [84]:
np.mgrid[0:10, 0:5]
Out[84]:
array([[[0, 0, 0, 0, 0],
        [1, 1, 1, 1, 1],
        [2, 2, 2, 2, 2],
        [3, 3, 3, 3, 3],
        [4, 4, 4, 4, 4],
        [5, 5, 5, 5, 5],
        [6, 6, 6, 6, 6],
        [7, 7, 7, 7, 7],
        [8, 8, 8, 8, 8],
        [9, 9, 9, 9, 9]],

       [[0, 1, 2, 3, 4],
        [0, 1, 2, 3, 4],
        [0, 1, 2, 3, 4],
        [0, 1, 2, 3, 4],
        [0, 1, 2, 3, 4],
        [0, 1, 2, 3, 4],
        [0, 1, 2, 3, 4],
        [0, 1, 2, 3, 4],
        [0, 1, 2, 3, 4],
        [0, 1, 2, 3, 4]]])
In [85]:
def f(x, y):
    return x**2 + y**3 
In [86]:
f(*np.mgrid[0:10, 0:5])
Out[86]:
array([[  0,   1,   8,  27,  64],
       [  1,   2,   9,  28,  65],
       [  4,   5,  12,  31,  68],
       [  9,  10,  17,  36,  73],
       [ 16,  17,  24,  43,  80],
       [ 25,  26,  33,  52,  89],
       [ 36,  37,  44,  63, 100],
       [ 49,  50,  57,  76, 113],
       [ 64,  65,  72,  91, 128],
       [ 81,  82,  89, 108, 145]])
In [87]:
np.meshgrid(np.arange(10), np.arange(5))
Out[87]:
[array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
        [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
        [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
        [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
        [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]),
 array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
        [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
        [2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
        [3, 3, 3, 3, 3, 3, 3, 3, 3, 3],
        [4, 4, 4, 4, 4, 4, 4, 4, 4, 4]])]
In [102]:
x = np.ones((3, 4), dtype=[('a', np.uint8), ('b', np.float)])
x[0, 0]['a'], x[0, 0]['b']
Out[102]:
(1, 1.0)
In [106]:
a = x['a']
assert not a.flags.owndata
a
Out[106]:
array([[1, 1, 1, 1],
       [1, 1, 1, 1],
       [1, 1, 1, 1]], dtype=uint8)
In [108]:
x = np.rec.fromarrays([np.ones(10), np.arange(10)], names='a,b')
In [109]:
x['a']
Out[109]:
array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
In [110]:
x.a
Out[110]:
array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
In [114]:
a = np.ma.array([1, 2, 3,], mask=[True, False, True], fill_value=-1)
np.ma.sum(a)
Out[114]:
2
In [116]:
np.sqrt([1, 2, 3, -1 + 0j])
Out[116]:
array([1.        +0.j, 1.41421356+0.j, 1.73205081+0.j, 0.        +1.j])
In [117]:
np.emath.sqrt([1, 2, 3, -1])
Out[117]:
array([1.        +0.j, 1.41421356+0.j, 1.73205081+0.j, 0.        +1.j])
In [118]:
import cmath
import math
In [119]:
cmath.sqrt(-1)
Out[119]:
1j
In [120]:
math.sqrt(-1+0j)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-120-2f48549c8254> in <module>
----> 1 math.sqrt(-1+0j)

TypeError: can't convert complex to float
In [123]:
f = np.fft.fft(np.sin(2 * np.pi * np.linspace(0, 1, 101)))
plt.plot(f.real)
Out[123]:
[<matplotlib.lines.Line2D at 0x7f9989b94dd0>]
In [129]:
np.linalg.norm([1, 2], ord=np.inf)
Out[129]:
2.0
In [130]:
np.linalg.svd
np.linalg.eig
Out[130]:
<function numpy.linalg.eig(a)>
In [132]:
?np.einsum
In [133]:
np.random.rand()
Out[133]:
0.36508887362359466
In [138]:
rng = np.random.default_rng()
rng.random()
Out[138]:
0.3055043431867601
In [140]:
rng.normal(loc=1.0, scale=5.0, size=(4, 5))
Out[140]:
array([[ -0.38974453,   9.41912691,  -3.56143058,  -3.45076648,
         -4.02642922],
       [ -1.81339188,  -0.38102547,   7.96255334,   0.46546284,
         -2.47341694],
       [ -2.63296368,   0.82167719,   4.31451695,  -0.65575519,
         -0.77180667],
       [ -8.45309078,  -5.52691539,   2.01680913, -11.70788438,
         -4.29842439]])
In [141]:
rng.bytes(100)
Out[141]:
b'0\xed\xc7D\xeb\xb1\x8aNi\xc8G\xf4\x15B\x06\xbcSc`\x836J\xc4\xf0N.\x0e\\\x07C\xc5\x07;\xbd\xed\xae\x93o\x88\xeb\xec*\xe7\x89Px\x04F\xa4\x0f\x03\xd6\xf0\xd7\xb0\x97.;\xa0\xcc\xef\xf8\x8a\x8a\xfdWZ@\xfb\x1d\x90@\xe6\xf7\x18E\xad\x01k\xde\x92\x16J\xa0Sy\x9e\xe7\xd8+\xad5\xfa\x87\xf4S\x8fGC\xa8'
In [153]:
a = np.arange(16) ** 2
rng.choice(a, 17, replace=True)
Out[153]:
array([225, 121,  81,  81, 144, 169,  64, 196, 121,   9,  81, 144,  25,
       196, 100,  64, 121])
In [154]:
rng.shuffle(a)
a
Out[154]:
array([ 49,   0,  25,   1, 100,  81, 121,   4,  16,  64,  36, 196, 169,
         9, 144, 225])
In [155]:
import random
In [167]:
from numpy.testing import assert_allclose, assert_array_equal
In [166]:
a = np.linspace(0, 1, 10, dtype=np.float32)
b = (a ** 7.5) ** (1./7.5)
assert_allclose(a, b, rtol=1e-6)
In [169]:
assert_array_equal(np.arange(10), np.r_[0:10])
assert np.all(np.arange(10) == np.r_[0:10])
In [ ]: