|
define([ |
|
"require", |
|
"./numpy_ufuncs", |
|
"./numpy_polynomial", |
|
], function (requirejs, numpy_ufuncs, numpy_polynomial) { |
|
return { |
|
'name' : 'NumPy', |
|
'sub-menu' : [ |
|
{ |
|
'name' : 'Setup', |
|
'snippet' : [ |
|
'from __future__ import print_function, division', |
|
'import numpy as np', |
|
], |
|
}, |
|
{ |
|
'name' : 'Documentation', |
|
'external-link' : 'http://docs.scipy.org/doc/numpy/index.html', |
|
}, |
|
'---', |
|
{ |
|
'name' : 'Creating arrays', |
|
'sub-menu' : [ |
|
{ |
|
'name' : 'New array of given shape', |
|
'snippet' : ['new_array = np.zeros((4,3,), dtype=complex)',], |
|
}, |
|
{ |
|
'name' : 'New array shaped like another', |
|
'snippet' : ['new_array = np.zeros_like(old_array, dtype=complex)',], |
|
}, |
|
{ |
|
'name' : 'Copy of existing data', |
|
'snippet' : ['new_array = np.copy(old_array)',], |
|
}, |
|
{ |
|
'name' : 'Array from list of data', |
|
'snippet' : ['new_array = np.array([1.2, 3.4, 5.6])',], |
|
}, |
|
{ |
|
'name' : 'Evenly spaced values within a given interval', |
|
'snippet' : ['new_array = np.arange(1, 10, 2)'], |
|
}, |
|
{ |
|
'name' : 'Evenly spaced numbers over a specified interval', |
|
'snippet' : ['new_array = np.linspace(1., 10., num=120, endpoint=True)'], |
|
}, |
|
{ |
|
'name' : 'Numbers spaced evenly on a log scale', |
|
'snippet' : ['new_array = np.logspace(1., 10., num=120, endpoint=True, base=2)'], |
|
}, |
|
{ |
|
'name' : 'Coordinate matrices from coordinate vectors', |
|
'snippet' : [ |
|
'x = np.linspace(0, 1, 7)', |
|
'y = np.linspace(0, 1, 11)', |
|
'xx, yy = np.meshgrid(x, y)', |
|
], |
|
}, |
|
{ |
|
'name' : 'Return views of the data, split into $N$ groups', |
|
'snippet' : [ |
|
'x = np.arange(12)', |
|
'a,b,c = np.split(x, 3)', |
|
], |
|
}, |
|
{ |
|
'name' : 'Return views of the data, split at given indices along given axis', |
|
'snippet' : [ |
|
'x = np.arange(27).reshape((3,9))', |
|
'a,b,c = np.split(x, [2,6], axis=1)', |
|
], |
|
}, |
|
{ |
|
'name' : 'Return copy of arrays, combined into one', |
|
'snippet' : [ |
|
'a = np.arange(30).reshape((2,3,5))', |
|
'b = np.arange(42).reshape((2,3,7))', |
|
'c = np.concatenate((a, b), axis=1)', |
|
], |
|
}, |
|
], |
|
}, |
|
|
|
{ |
|
'name' : 'Reshaping and viewing arrays', |
|
'sub-menu' : [ |
|
{ |
|
'name' : 'Return a view of the data, with a different shape', |
|
'snippet' : ['np.arange(6).reshape((3, 2))'], |
|
}, |
|
{ |
|
'name' : 'Return a view of the data, with an extra axis', |
|
'snippet' : ['a[:, np.newaxis]'], |
|
}, |
|
{ |
|
'name' : 'Return a view of the data, flattened to 1-D', |
|
'snippet' : ['a.ravel()'], |
|
}, |
|
{ |
|
'name' : 'Return a copy of the data, flattened to 1-D', |
|
'snippet' : ['a.flatten()'], |
|
}, |
|
{ |
|
'name' : 'Return a view of the data, with a different dtype', |
|
'snippet' : ['np.linspace(0, 10, num=50).view(complex)'], |
|
'sub-menu' : [ |
|
{ |
|
'name' : 'View real array as complex', |
|
'snippet' : [ |
|
'r = np.linspace(0, 10, num=100).reshape((25,4))', |
|
'c = r.view(complex)', |
|
], |
|
}, |
|
{ |
|
'name' : 'View complex array as real with extra dimension', |
|
'snippet' : [ |
|
'c = (np.linspace(0, 10, num=50) + 1j*np.linspace(0, 10, num=50))', |
|
'cv = c.view(float)', |
|
'r = cv.reshape(c.shape + (2,))', |
|
], |
|
}, |
|
], |
|
}, |
|
{ |
|
'name' : 'Return a copy of the data, cast to a different dtype', |
|
'snippet' : ['np.linspace(0, 10, num=50).astype(complex)'], |
|
}, |
|
{ |
|
'name' : 'Return a view of the data with indices reversed (transposed)', |
|
'snippet' : ['np.arange(210).reshape((2,3,5,7)).transpose()'], |
|
}, |
|
{ |
|
'name' : 'Return a view of the data with indices permuted', |
|
'snippet' : ['np.arange(210).reshape((2,3,5,7)).transpose((2,1,0,3))'], |
|
}, |
|
{ |
|
'name' : 'Exchange two axes in an array', |
|
'snippet' : ['np.arange(210).reshape((2,3,5,7)).swapaxes(1,3)'], |
|
}, |
|
{ |
|
'name' : 'Permute axes, bringing given axis into new position', |
|
'snippet' : ['np.rollaxis(np.arange(210).reshape((2,3,5,7)), 2, 0)'], |
|
}, |
|
{ |
|
'name' : 'Permute indices by a given amount along the given axis', |
|
'snippet' : ['np.roll(np.arange(10).reshape((2,5)), 2, axis=1)'], |
|
}, |
|
{ |
|
'name' : 'Return views of the data, split into $N$ groups', |
|
'snippet' : [ |
|
'x = np.arange(12)', |
|
'a,b,c = np.split(x, 3)', |
|
], |
|
}, |
|
{ |
|
'name' : 'Return views of the data, split at given indices along given axis', |
|
'snippet' : [ |
|
'x = np.arange(27).reshape((3,9))', |
|
'a,b,c = np.split(x, [2,6], axis=1)', |
|
], |
|
}, |
|
{ |
|
'name' : 'Return copy of arrays, combined into one', |
|
'snippet' : [ |
|
'a = np.arange(30).reshape((2,3,5))', |
|
'b = np.arange(42).reshape((2,3,7))', |
|
'c = np.concatenate((a, b), axis=1)', |
|
], |
|
}, |
|
], |
|
}, |
|
|
|
{ |
|
'name' : 'Indexing and testing arrays', |
|
'sub-menu' : [ |
|
{ |
|
'name' : 'Indexing documentation', |
|
'external-link' : 'http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html', |
|
}, |
|
'---', |
|
{ |
|
'name' : 'Test if array is empty', |
|
'snippet' : [ |
|
'if a.size > 0: # Never use `if a` or `if len(a)` for numpy arrays', |
|
' print(a)', |
|
], |
|
}, |
|
{ |
|
'name' : 'Get number of dimensions of array', |
|
'snippet' : ['a.ndim'], |
|
}, |
|
{ |
|
'name' : 'Get shape of array', |
|
'snippet' : ['a.shape'], |
|
}, |
|
{ |
|
'name' : 'Index a one-dimensional array', |
|
'sub-menu' : [ |
|
{ |
|
'name' : 'Get one element', |
|
'snippet' : [ |
|
'a = np.arange(10)', |
|
'a[3]' |
|
], |
|
}, |
|
{ |
|
'name' : 'Get first $N$ elements', |
|
'snippet' : [ |
|
'a = np.arange(10)', |
|
'a[:3]' |
|
], |
|
}, |
|
{ |
|
'name' : 'Get last $N$ elements', |
|
'snippet' : [ |
|
'a = np.arange(10)', |
|
'a[-3:]' |
|
], |
|
}, |
|
{ |
|
'name' : 'Get elements $N$ to $M$', |
|
'snippet' : [ |
|
'a = np.arange(10)', |
|
'a[3:6]' |
|
], |
|
}, |
|
{ |
|
'name' : 'Get elements satisfying a condition', |
|
'snippet' : [ |
|
'a = np.arange(10)', |
|
'a[a>5]' |
|
], |
|
}, |
|
], |
|
}, |
|
{ |
|
'name' : 'Index a multi-dimensional array', |
|
'sub-menu' : [ |
|
{ |
|
'name' : 'Get one element', |
|
'snippet' : [ |
|
'a = np.arange(30).reshape((2,3,5))', |
|
'a[1, 2, 4]' |
|
], |
|
}, |
|
{ |
|
'name' : 'Get first $N$ elements along each final axis', |
|
'snippet' : [ |
|
'a = np.arange(30).reshape((2,3,5))', |
|
'a[:, :, :4]' |
|
], |
|
}, |
|
{ |
|
'name' : 'Get last $N$ elements along each final axis', |
|
'snippet' : [ |
|
'a = np.arange(30).reshape((2,3,5))', |
|
'a[:, :, -3:]' |
|
], |
|
}, |
|
{ |
|
'name' : 'Get elements $N$ to $M$ along each final axis', |
|
'snippet' : [ |
|
'a = np.arange(30).reshape((2,3,5))', |
|
'a[:, :, 3:5]' |
|
], |
|
}, |
|
{ |
|
'name' : 'Get elements satisfying a condition (flattened result)', |
|
'snippet' : [ |
|
'a = np.arange(30).reshape((2,3,5))', |
|
'a[a>5]' |
|
], |
|
}, |
|
], |
|
}, |
|
{ |
|
'name' : 'Index an array of unknown dimension', |
|
'sub-menu' : [ |
|
{ |
|
'name' : 'Get first $N$ elements along each final axis', |
|
'snippet' : [ |
|
'a = np.arange(30).reshape((2,3,5))', |
|
'a[..., :4]' |
|
], |
|
}, |
|
{ |
|
'name' : 'Get last $N$ elements along each final axis', |
|
'snippet' : [ |
|
'a = np.arange(30).reshape((2,3,5))', |
|
'a[..., -3:]' |
|
], |
|
}, |
|
{ |
|
'name' : 'Get elements $N$ to $M$ along each final axis', |
|
'snippet' : [ |
|
'a = np.arange(30).reshape((2,3,5))', |
|
'a[..., 3:5]' |
|
], |
|
}, |
|
{ |
|
'name' : 'Get elements satisfying a condition (flattened result)', |
|
'snippet' : [ |
|
'a = np.arange(30).reshape((2,3,5))', |
|
'a[a>5]' |
|
], |
|
}, |
|
], |
|
}, |
|
{ |
|
'name' : '', |
|
'snippet' : [ |
|
'' |
|
], |
|
}, |
|
], |
|
}, |
|
|
|
numpy_ufuncs, |
|
|
|
numpy_polynomial, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{ |
|
'name' : 'Pretty printing', |
|
'sub-menu' : [ |
|
{ |
|
'name' : 'Context manager', |
|
'snippet' : [ |
|
'import contextlib', |
|
'@contextlib.contextmanager', |
|
'def printoptions(*args, **kwargs):', |
|
' original = np.get_printoptions()', |
|
' np.set_printoptions(*args, **kwargs)', |
|
' yield', |
|
' np.set_printoptions(**original)', |
|
], |
|
}, |
|
'---', |
|
{ |
|
'name' : 'Print to given precision', |
|
'snippet' : [ |
|
'with printoptions(precision=5):', |
|
' print(np.random.random(10))', |
|
], |
|
}, |
|
{ |
|
'name' : 'Summarize arrays with more than $N+1$ elements', |
|
'snippet' : [ |
|
'with printoptions(threshold=5):', |
|
' print(np.random.random(10))', |
|
], |
|
}, |
|
{ |
|
'name' : 'Print $N$ elements at each end of a summary', |
|
'snippet' : [ |
|
'with printoptions(threshold=5, edgeitems=4):', |
|
' print(np.random.random(10))', |
|
], |
|
}, |
|
{ |
|
'name' : 'Set number of characters per line', |
|
'snippet' : [ |
|
'with printoptions(linewidth=100):', |
|
' print(np.random.random(10))', |
|
], |
|
}, |
|
{ |
|
'name' : 'Suppress printing of small values', |
|
'snippet' : [ |
|
'with printoptions(suppress=True):', |
|
' print(1e-8*np.random.random(10))', |
|
], |
|
}, |
|
{ |
|
'name' : 'Set string with which to represent nan', |
|
'snippet' : [ |
|
"with printoptions(nanstr='NaN!'):", |
|
' print(np.array([1, np.nan, 3]))', |
|
], |
|
}, |
|
{ |
|
'name' : 'Set string with which to represent infinity', |
|
'snippet' : [ |
|
"with printoptions(infstr='oo'):", |
|
' print(np.array([1, np.inf, 3]))', |
|
], |
|
}, |
|
{ |
|
'name' : 'Formatting functions for specific dtypes', |
|
'sub-menu' : [ |
|
{ |
|
'name' : 'Set formatter for `bool` type', |
|
'snippet' : [ |
|
"def format_bool(x):", |
|
" if x:", |
|
" return 'TRUE'", |
|
" else:", |
|
" return 'FALSE'", |
|
"with printoptions(formatter={'bool': format_bool}):", |
|
" print(np.random.randint(0,2,10).astype(bool))", |
|
], |
|
}, |
|
{ |
|
'name' : 'Set formatter for `int` type', |
|
'snippet' : [ |
|
"def format_int(x):", |
|
" return 'int({0})'.format(x)", |
|
"with printoptions(formatter={'int': format_int}):", |
|
" print(np.random.randint(-3, 4, 10))", |
|
], |
|
}, |
|
{ |
|
'name' : 'Set formatter for `timedelta` type', |
|
'snippet' : [ |
|
"def format_timedelta(delta):", |
|
" days = delta.astype('timedelta64[D]').astype(int)", |
|
" hours = delta.astype('timedelta64[h]').astype(int) - 24*days", |
|
" minutes = delta.astype('timedelta64[m]').astype(int) - 60*(24*days+hours)", |
|
" seconds = delta.astype('timedelta64[s]').astype(int) - 60*(60*(24*days+hours)+minutes)", |
|
" return '{0}days,{1}hours,{2}minutes,{3}seconds'.format(days, hours, minutes, seconds)", |
|
"with printoptions(formatter={'timedelta': format_timedelta}):", |
|
" print(np.array([np.timedelta64(int(sec), 's') for sec in np.random.randint(0, 1000000, 10)]))", |
|
], |
|
}, |
|
{ |
|
'name' : 'Set formatter for `datetime` type', |
|
'snippet' : [ |
|
"def format_datetime(date):", |
|
" year = date.astype('datetime64[Y]').astype(int) + 1970", |
|
" month = date.astype('datetime64[M]').astype(int) % 12 + 1", |
|
" day = (date - date.astype('datetime64[M]')).astype(int) + 1", |
|
" return 'Y{0}:M{1}:D{2}'.format(year, month, day)", |
|
"with printoptions(formatter={'datetime': format_datetime}):", |
|
" days = np.random.randint(0, 20000, 10)", |
|
" dates = np.array([np.datetime64(int(d), 'D') for d in days])", |
|
" print(dates)", |
|
], |
|
}, |
|
{ |
|
'name' : 'Set formatter for `float` type', |
|
'snippet' : [ |
|
"def format_float(x):", |
|
" return '{0:+0.2f}'.format(x)", |
|
"with printoptions(formatter={'float': format_float}):", |
|
" print(np.random.random(10)-0.5)", |
|
], |
|
}, |
|
{ |
|
'name' : 'Set formatter for `longfloat` type', |
|
'snippet' : [ |
|
"def format_longfloat(x):", |
|
" return 'long{0}'.format(x)", |
|
"with printoptions(formatter={'longfloat': format_longfloat}):", |
|
" print(np.random.random(10).astype(np.longfloat))", |
|
], |
|
}, |
|
{ |
|
'name' : 'Set formatter for `complexfloat` type', |
|
'snippet' : [ |
|
"def format_complexfloat(x):", |
|
" return '{0.real}+1j*{0.imag}'.format(x)", |
|
"with printoptions(formatter={'complexfloat': format_complexfloat}):", |
|
" print(np.random.random(5)+1j*np.random.random(5))", |
|
], |
|
}, |
|
{ |
|
'name' : 'Set formatter for `longcomplexfloat` type', |
|
'snippet' : [ |
|
"def format_longcomplexfloat(x):", |
|
" return '{0.real}+1j*{0.imag}'.format(x)", |
|
"with printoptions(formatter={'longcomplexfloat': format_longcomplexfloat}):", |
|
" print(np.random.random(5).astype(np.longfloat)+1j*np.random.random(5).astype(np.longfloat))", |
|
], |
|
}, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
'---', |
|
{ |
|
'name' : 'Set formatter for all types', |
|
'snippet' : [ |
|
"def format_all(x):", |
|
" return 'repr({0})'.format(repr(x))", |
|
"with printoptions(formatter={'all': format_all}):", |
|
" print(np.array([3, 8]))", |
|
" print(np.array([0.1, 0.5]))", |
|
" print(np.array([1.4+2.3j, 2.8+4.6j]))", |
|
" print(np.array(['abc', 'xyz']))", |
|
], |
|
}, |
|
{ |
|
'name' : 'Set formatter for all `int` types', |
|
'snippet' : [ |
|
"def format_int_kind(x):", |
|
" return 'int({0})'.format(x)", |
|
"with printoptions(formatter={'int_kind': format_int_kind}):", |
|
" print(np.random.randint(-100, 100, 10))", |
|
], |
|
}, |
|
{ |
|
'name' : 'Set formatter for all `float` types', |
|
'snippet' : [ |
|
"def format_float_kind(x):", |
|
" return '{0:.2%}'.format(x)", |
|
"with printoptions(formatter={'float_kind': format_float_kind}):", |
|
" print(np.random.random(10))", |
|
], |
|
}, |
|
{ |
|
'name' : 'Set formatter for all `complex` types', |
|
'snippet' : [ |
|
"def format_complex_kind(x):", |
|
" return '{0.real}+1j*{0.imag}'.format(x)", |
|
"with printoptions(formatter={'complex_kind': format_complex_kind}):", |
|
" print(np.random.random(5)+1j*np.random.random(5))", |
|
], |
|
}, |
|
{ |
|
'name' : 'Set formatter for all `str` types', |
|
'snippet' : [ |
|
"def format_str_kind(x):", |
|
" return 'str({0})'.format(x)", |
|
"with printoptions(formatter={'str_kind': format_str_kind}):", |
|
" print(np.array(['abc', 'xyz']))", |
|
], |
|
}, |
|
], |
|
}, |
|
], |
|
}, |
|
|
|
{ |
|
'name' : 'File I/O', |
|
'sub-menu' : [ |
|
{ |
|
'name' : 'Read data from simple text file', |
|
'snippet' : [ |
|
'data = np.loadtxt(filename)', |
|
], |
|
}, |
|
{ |
|
'name' : 'Read data from text file with missing values', |
|
'snippet' : [ |
|
'data = np.genfromtxt(filename)', |
|
], |
|
}, |
|
{ |
|
'name' : 'Read data from .npy or .npz file', |
|
'snippet' : [ |
|
'data = np.load(filename)', |
|
], |
|
}, |
|
'---', |
|
{ |
|
'name' : 'Write single array to text file', |
|
'snippet' : [ |
|
'np.savetxt(filename, x)', |
|
], |
|
}, |
|
{ |
|
'name' : 'Write multiple arrays to text file', |
|
'snippet' : [ |
|
'np.savetxt(filename, np.transpose((x, y, z)))', |
|
], |
|
}, |
|
{ |
|
'name' : 'Write single array to single .npy file', |
|
'snippet' : [ |
|
'np.save(filename, x)', |
|
], |
|
}, |
|
{ |
|
'name' : 'Write multiple arrays to single .npy file', |
|
'snippet' : [ |
|
'np.save(filename, np.transpose((x, y, z)))', |
|
], |
|
}, |
|
{ |
|
'name' : 'Write multiple arrays to single .npz file', |
|
'snippet' : [ |
|
'np.savez(filename, x, y, z)', |
|
], |
|
}, |
|
{ |
|
'name' : 'Write multiple arrays to single compressed .npz file', |
|
'snippet' : [ |
|
'np.savez_compressed(filename, x, y, z)', |
|
], |
|
}, |
|
], |
|
}, |
|
] |
|
} |
|
} |
|
); |
|
|