Numpy_Example_List - SciPy wiki dump (original) (raw)

This is an archival dump of old wiki content --- see scipy.org for current material

This page contains a large database of examples demonstrating most of the Numpy functionality. Numpy_Example_List_With_Doc has these examples interleaved with the built-in documentation, but is not as regularly updated as this page. The examples here can be easily accessed from Python using the Numpy_Example_Fetcher.

This example list is incredibly useful, and we would like to get all the good examples and comments integrated in the official numpy documentation so that they are also shipped with numpy. You can help. The official numpy documentation can be edited on http://docs.scipy.org.


...

from numpy import * a = arange(12) a = a.reshape(3,2,2) print a [[[ 0 1] [ 2 3]] [[ 4 5] [ 6 7]] [[ 8 9] [10 11]]] a[...,0]
array([[ 0, 2], [ 4, 6], [ 8, 10]]) a[1:,...] array([[[ 4, 5], [ 6, 7]], [[ 8, 9], [10, 11]]])

See also: [], newaxis

[]

from numpy import * a = array([ [ 0, 1, 2, 3, 4], ... [10,11,12,13,14], ... [20,21,22,23,24], ... [30,31,32,33,34] ])

a[0,0] 0 a[-1] array([30, 31, 32, 33, 34]) a[1:3,1:4] array([[11, 12, 13], [21, 22, 23]])

i = array([0,1,2,1]) j = array([1,2,3,4]) a[i,j] array([ 1, 12, 23, 14])

a[a<13] array([ 0, 1, 2, 3, 4, 10, 11, 12])

b1 = array( [True,False,True,False] ) a[b1,:] array([[ 0, 1, 2, 3, 4], [20, 21, 22, 23, 24]])

b2 = array( [False,True,True,False,True] ) a[:,b2] array([[ 1, 2, 4], [11, 12, 14], [21, 22, 24], [31, 32, 34]])

See also: ..., newaxis, ix_, indices, nonzero, where, slice

abs()

from numpy import * abs(-1) 1 abs(array([-1.2, 1.2])) array([ 1.2, 1.2]) abs(1.2+1j) 1.5620499351813308

See also: absolute, angle

absolute()

Synonym for abs()

See abs

accumulate()

from numpy import * add.accumulate(array([1.,2.,3.,4.])) array([ 1., 3., 6., 10.]) array([1., 1.+2., (1.+2.)+3., ((1.+2.)+3.)+4.]) array([ 1., 3., 6., 10.]) multiply.accumulate(array([1.,2.,3.,4.])) array([ 1., 2., 6., 24.]) array([1., 1.*2., (1.*2.)*3., ((1.*2.)*3.)*4.]) array([ 1., 2., 6., 24.]) add.accumulate(array([[1,2,3],[4,5,6]]), axis = 0) array([[1, 2, 3], [5, 7, 9]]) add.accumulate(array([[1,2,3],[4,5,6]]), axis = 1) array([[ 1, 3, 6], [ 4, 9, 15]])

See also: reduce, cumprod, cumsum

add()

from numpy import * add(array([-1.2, 1.2]), array([1,3])) array([-0.2, 4.2]) array([-1.2, 1.2]) + array([1,3]) array([-0.2, 4.2])

all()

from numpy import * a = array([True, False, True]) a.all() False all(a) False a = array([1,2,3]) all(a > 0) True

See also: any, alltrue, sometrue

allclose()

allclose(array([1e10,1e-7]), array([1.00001e10,1e-8])) False allclose(array([1e10,1e-8]), array([1.00001e10,1e-9])) True allclose(array([1e10,1e-8]), array([1.0001e10,1e-9])) False

alltrue()

from numpy import * b = array([True, False, True, True]) alltrue(b) False a = array([1, 5, 2, 7]) alltrue(a >= 5) False

See also: sometrue, all, any

angle()

from numpy import * angle(1+1j) 0.78539816339744828 angle(1+1j,deg=True) 45.0

See also: real, imag, hypot

any()

from numpy import * a = array([True, False, True]) a.any() True any(a) True a = array([1,2,3]) (a >= 1).any() True

See also: all, alltrue, sometrue

append()

from numpy import * a = array([10,20,30,40]) append(a,50) array([10, 20, 30, 40, 50]) append(a,[50,60]) array([10, 20, 30, 40, 50, 60]) a = array([[10,20,30],[40,50,60],[70,80,90]]) append(a,[[15,15,15]],axis=0) array([[10, 20, 30], [40, 50, 60], [70, 80, 90], [15, 15, 15]]) append(a,[[15],[15],[15]],axis=1) array([[10, 20, 30, 15], [40, 50, 60, 15], [70, 80, 90, 15]])

See also: insert, delete, concatenate

apply_along_axis()

from numpy import * def myfunc(a): ... return (a[0]+a[-1])/2 ... b = array([[1,2,3],[4,5,6],[7,8,9]]) apply_along_axis(myfunc,0,b) array([4, 5, 6]) apply_along_axis(myfunc,1,b) array([2, 5, 8])

See also: apply_over_axes, vectorize

apply_over_axes()

from numpy import * a = arange(24).reshape(2,3,4) a array([[[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]], [[12, 13, 14, 15], [16, 17, 18, 19], [20, 21, 22, 23]]]) apply_over_axes(sum, a, [0,2]) array([[[ 60], [ 92], [124]]])

See also: apply_along_axis, vectorize

arange()

from numpy import * arange(3) array([0, 1, 2]) arange(3.0) array([ 0., 1., 2.]) arange(3, dtype=float) array([ 0., 1., 2.]) arange(3,10) array([3, 4, 5, 6, 7, 8, 9]) arange(3,10,2) array([3, 5, 7, 9])

See also: r_, linspace, logspace, mgrid, ogrid

arccos()

from numpy import * arccos(array([0, 1])) array([ 1.57079633, 0. ])

See also: arcsin, arccosh, arctan, arctan2

arccosh()

from numpy import * arccosh(array([e, 10.0])) array([ 1.65745445, 2.99322285])

See also: arccos, arcsinh, arctanh

arcsin()

from numpy import * arcsin(array([0, 1])) array([ 0. , 1.57079633])

See also: arccos, arctan, arcsinh

arcsinh()

from numpy import * arcsinh(array([e, 10.0])) array([ 1.72538256, 2.99822295])

See also: arccosh, arcsin, arctanh

arctan()

from numpy import * arctan(array([0, 1])) array([ 0. , 0.78539816])

See also: arccos, arcsin, arctanh

arctan2()

from numpy import * arctan2(array([0, 1]), array([1, 0])) array([ 0. , 1.57079633])

See also: arcsin, arccos, arctan, arctanh

arctanh()

from numpy import * arctanh(array([0, -0.5])) array([ 0. , -0.54930614])

See also: arcsinh, arccosh, arctan, arctan2

argmax()

from numpy import * a = array([10,20,30]) maxindex = a.argmax() a[maxindex] 30 a = array([[10,50,30],[60,20,40]]) maxindex = a.argmax() maxindex 3 a.ravel()[maxindex] 60 a.argmax(axis=0) array([1, 0, 1]) a.argmax(axis=1) array([1, 0]) argmax(a) array([1, 0])

See also: argmin, nan, min, max, maximum, minimum

argmin()

from numpy import * a = array([10,20,30]) minindex = a.argmin() a[minindex] 10 a = array([[10,50,30],[60,20,40]]) minindex = a.argmin() minindex 0 a.ravel()[minindex] 10 a.argmin(axis=0) array([0, 1, 0]) a.argmin(axis=1) array([0, 1]) argmin(a) array([0, 1])

See also: argmax, nan, min, max, maximum, minimum

argsort()

argsort(axis=-1, kind="quicksort")

from numpy import * a = array([2,0,8,4,1]) ind = a.argsort() ind array([1, 4, 0, 3, 2]) a[ind] array([0, 1, 2, 4, 8]) ind = a.argsort(kind='merge') a = array([[8,4,1],[2,0,9]]) ind = a.argsort(axis=0) ind array([[1, 1, 0], [0, 0, 1]]) a[ind,[[0,1,2],[0,1,2]]] array([[2, 0, 1], [8, 4, 9]]) ind = a.argsort(axis=1) ind array([[2, 1, 0], [1, 0, 2]]) a = ones(17) a.argsort() array([ 0, 14, 13, 12, 11, 10, 9, 15, 8, 6, 5, 4, 3, 2, 1, 7, 16]) a.argsort(kind="mergesort") array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]) ind = argsort(a)

See also: lexsort, sort

array()

from numpy import * array([1,2,3]) array([1, 2, 3]) array([1,2,3], dtype=complex) array([ 1.+0.j, 2.+0.j, 3.+0.j]) array(1, copy=0, subok=1, ndmin=1) array([1]) array(1, copy=0, subok=1, ndmin=2) array([[1]]) array(1, subok=1, ndmin=2) array([[1]]) mydescriptor = {'names': ('gender','age','weight'), 'formats': ('S1', 'f4', 'f4')} a = array([('M',64.0,75.0),('F',25.0,60.0)], dtype=mydescriptor) print a [('M', 64.0, 75.0) ('F', 25.0, 60.0)] a['weight'] array([ 75., 60.], dtype=float32) a.dtype.names ('gender','age','weight') mydescriptor = [('age',int16),('Nchildren',int8),('weight',float32)] a = array([(64,2,75.0),(25,0,60.0)], dtype=mydescriptor) a['Nchildren'] array([2, 0], dtype=int8) mydescriptor = dtype([('x', 'f4'),('y', 'f4'), ... ('nested', [('i', 'i2'),('j','i2')])]) array([(1.0, 2.0, (1,2))], dtype=mydescriptor) array([(1.0, 2.0, (1, 2))], dtype=[('x', '<f4'), ('y', '<f4'), ('nested', [('i', '<i2'), ('j', '<i2')])]) array([(1.0, 2.0, (1,2)), (2.1, 3.2, (3,2))], dtype=mydescriptor) array([(1.0, 2.0, (1, 2)), (2.0999999046325684, 3.2000000476837158, (3, 2))], dtype=[('x', '<f4'), ('y', '<f4'), ('nested', [('i', '<i2'), ('j', '<i2')])]) a=array([(1.0, 2.0, (1,2)), (2.1, 3.2, (3,2))], dtype=mydescriptor) a['x'] array([ 1. , 2.0999999], dtype=float32) a['nested'] array([(1, 2), (3, 2)], dtype=[('i', '<i2'), ('j', '<i2')]) a['nested']['i'] mydescriptor = dtype([('x', 'f4'),('y', 'f4'), ... ('nested', [('i', 'i2'),('j','i2')])]) array([(1.0, 2.0, (1,2))], dtype=mydescriptor) array([(1.0, 2.0, (1, 2))], dtype=[('x', '<f4'), ('y', '<f4'), ('nested', [('i', '<i2'), ('j', '<i2')])]) array([(1.0, 2.0, (1,2)), (2.1, 3.2, (3,2))], dtype=mydescriptor) array([(1.0, 2.0, (1, 2)), (2.0999999046325684, 3.2000000476837158, (3, 2))], dtype=[('x', '<f4'), ('y', '<f4'), ('nested', [('i', '<i2'), ('j', '<i2')])]) a=array([(1.0, 2.0, (1,2)), (2.1, 3.2, (3,2))], dtype=mydescriptor) a['x'] array([ 1. , 2.0999999], dtype=float32) a['nested'] array([(1, 2), (3, 2)], dtype=[('i', '<i2'), ('j', '<i2')]) a['nested']['i'] array([1, 3], dtype=int16)

See also: dtype, mat, asarray

arrayrange()

Synonym for arange()

See arange

array_split()

from numpy import * a = array([[1,2,3,4],[5,6,7,8]]) array_split(a,2,axis=0) [array([[1, 2, 3, 4]]), array([[5, 6, 7, 8]])] array_split(a,4,axis=1) [array([[1], [5]]), array([[2], [6]]), array([[3], [7]]), array([[4], [8]])] array_split(a,3,axis=1) [array([[1, 2], [5, 6]]), array([[3], [7]]), array([[4], [8]])] array_split(a,[2,3],axis=1) [array([[1, 2], [5, 6]]), array([[3], [7]]), array([[4], [8]])]

See also: dsplit, hsplit, vsplit, split, concatenate

asarray()

from numpy import * m = matrix('1 2; 5 8') m matrix([[1, 2], [5, 8]]) a = asarray(m) a array([[1, 2], [5, 8]]) m[0,0] = -99 m matrix([[-99, 2], [ 5, 8]]) a array([[-99, 2], [ 5, 8]])

See also: asmatrix, array, matrix, mat

asanyarray()

from numpy import * a = array([[1,2],[5,8]]) a array([[1, 2], [5, 8]]) m = matrix('1 2; 5 8') m matrix([[1, 2], [5, 8]]) asanyarray(a) array([[1, 2], [5, 8]]) asanyarray(m) matrix([[1, 2], [5, 8]]) asanyarray([1,2,3]) array([1, 2, 3])

See also: asmatrix, asarray, array, mat

asmatrix()

from numpy import * a = array([[1,2],[5,8]]) a array([[1, 2], [5, 8]]) m = asmatrix(a) m matrix([[1, 2], [5, 8]]) a[0,0] = -99 a array([[-99, 2], [ 5, 8]]) m matrix([[-99, 2], [ 5, 8]])

See also: asarray, array, matrix, mat

astype()

from numpy import * x = array([1,2,3]) y = x.astype(float64) type(y[0]) <type 'numpy.float64'> x.astype(None) array([1., 2., 3.])

See also: cast, dtype, ceil, floor, round_, fix

atleast_1d()

from numpy import * a = 1 b = array([2,3]) c = array([[4,5],[6,7]]) d = arange(8).reshape(2,2,2) d array([[[0, 1], [2, 3]], [[4, 5], [6, 7]]]) atleast_1d(a,b,c,d) [array([1]), array([2, 3]), array([[4, 5], [6, 7]]), array([[[0, 1], [2, 3]], [[4, 5], [6, 7]]])]

See also: atleast_2d, atleast_3d, newaxis, expand_dims

atleast_2d()

from numpy import * a = 1 b = array([2,3]) c = array([[4,5],[6,7]]) d = arange(8).reshape(2,2,2) d array([[[0, 1], [2, 3]], [[4, 5], [6, 7]]]) atleast_2d(a,b,c,d) [array([[1]]), array([[2, 3]]), array([[4, 5], [6, 7]]), array([[[0, 1], [2, 3]], [[4, 5], [6, 7]]])]

See also: atleast_1d, atleast_3d, newaxis, expand_dims

atleast_3d()

from numpy import * a = 1 b = array([2,3]) c = array([[4,5],[6,7]]) d = arange(8).reshape(2,2,2) d array([[[0, 1], [2, 3]], [[4, 5], [6, 7]]]) atleast_3d(a,b,c,d) [array([[[1]]]), array([[[2], [3]]]), array([[[4], [5]], [[6], [7]]]), array([[[0, 1], [2, 3]], [[4, 5], [6, 7]]])]

See also: atleast_1d, atleast_2d, newaxis, expand_dims

average()

from numpy import * a = array([1,2,3,4,5]) w = array([0.1, 0.2, 0.5, 0.2, 0.2]) average(a) 3.0 average(a,weights=w) 3.1666666666666665 average(a,weights=w,returned=True) (3.1666666666666665, 1.2)

See also: mean, median

beta()

from numpy import * from numpy.random import * beta(a=1,b=10,size=(2,2)) array([[ 0.02571091, 0.04973536], [ 0.04887027, 0.02382052]])

See also: seed

binary_repr()

from numpy import * a = 25 binary_repr(a) '11001' b = float_(pi) b.nbytes 8 binary_repr(b.view('u8')) '1010100010001000010110100011000'

bincount()

from numpy import * a = array([1,1,1,1,2,2,4,4,5,6,6,6]) bincount(a) array([0, 4, 2, 0, 2, 1, 3]) a = array([5,4,4,2,2]) w = array([0.1, 0.2, 0.1, 0.3, 0.5]) bincount(a) array([0, 0, 2, 0, 2, 1]) bincount(a, weights=w) array([ 0. , 0. , 0.8, 0. , 0.3, 0.1])

See also: histogram, digitize

binomial()

from numpy import * from numpy.random import * binomial(n=100,p=0.5,size=(2,3)) array([[38, 50, 53], [56, 48, 54]]) from pylab import * hist(binomial(100,0.5,(1000)), 20)

See also: random_sample, uniform, standard_normal, seed

bitwise_and()

from numpy import * bitwise_and(array([2,5,255]), array([4,4,4])) array([0, 4, 4]) bitwise_and(array([2,5,255,2147483647L],dtype=int32), array([4,4,4,2147483647L],dtype=int32)) array([ 0, 4, 4, 2147483647])

See also: bitwise_or, bitwise_xor, logical_and

bitwise_or()

from numpy import * bitwise_or(array([2,5,255]), array([4,4,4])) array([ 6, 5, 255]) bitwise_or(array([2,5,255,2147483647L],dtype=int32), array([4,4,4,2147483647L],dtype=int32)) array([ 6, 5, 255, 2147483647])

See also: bitwise_and, bitwise_xor, logical_or

bitwise_xor()

from numpy import * bitwise_xor(array([2,5,255]), array([4,4,4])) array([ 6, 1, 251]) bitwise_xor(array([2,5,255,2147483647L],dtype=int32), array([4,4,4,2147483647L],dtype=int32)) array([ 6, 1, 251, 0])

See also: bitwise_and, bitwise_or, logical_xor

bmat()

from numpy import * a = mat('1 2; 3 4') b = mat('5 6; 7 8') bmat('a b; b a') matrix([[1, 2, 5, 6], [3, 4, 7, 8], [5, 6, 1, 2], [7, 8, 3, 4]])

See also: mat

broadcast()

from numpy import * a = array([[1,2],[3,4]]) b = array([5,6]) c = broadcast(a,b) c.nd 2 c.shape (2, 2) c.size 4 for value in c: print value ... (1, 5) (2, 6) (3, 5) (4, 6) c.reset() c.next() (1, 5)

See also: ndenumerate, ndindex, flat

bytes()

from numpy import * from numpy.random import bytes print repr(bytes(5)) 'o\x07\x9f\xdf\xdf' print repr(bytes(5)) '\x98\xc9KD\xe0'

See also: shuffle, permutation, seed

c_[]

from numpy import * c_[1:5] array([1, 2, 3, 4]) c_[1:5,2:6] array([[1, 2], [2, 3], [3, 4], [4, 5]]) a = array([[1,2,3],[4,5,6]]) c_[a,a] array([[1, 2, 3, 1, 2, 3], [4, 5, 6, 4, 5, 6]]) c_['0',a,a] array([[1, 2, 3], [4, 5, 6], [1, 2, 3], [4, 5, 6]])

See also: r_, hstack, vstack, column_stack, concatenate, bmat, s_

cast[]()

from numpy import * x = arange(3) x.dtype dtype('int32') cast'int64' array([0, 1, 2], dtype=int64) cast'uint' array([0, 1, 2], dtype=uint32) castfloat128 array([0.0, 1.0, 2.0], dtype=float128) cast.keys()

See also: astype, typeDict

ceil()

from numpy import * a = array([-1.7, -1.5, -0.2, 0.2, 1.5, 1.7]) ceil(a) array([-1., -1., -0., 1., 2., 2.])

See also: floor, round_, fix, astype

choose()

from numpy import * choice0 =array([10,12,14,16]) choice1 =array([20,22,24,26]) choice2 =array([30,32,34,36]) selector = array([0,0,2,1]) selector.choose(choice0,choice1,choice2) array([10, 12, 34, 26]) a = arange(4) choose(a >= 2, (choice0, choice1)) array([10, 12, 24, 26])

See also: compress, take, where, select

clip()

from numpy import * a = array([5,15,25,3,13]) a.clip(min=10,max=20) array([10, 15, 20, 10, 13]) clip(a,10,20)

See also: where compress

column_stack()

from numpy import * a = array([1,2]) b = array([3,4]) c = array([5,6]) column_stack((a,b,c)) array([[1, 3, 5], [2, 4, 6]])

See also: concatenate, dstack, hstack, vstack, c_

compress()

from numpy import * a = array([10, 20, 30, 40]) condition = (a > 15) & (a < 35) condition array([False, True, True, False], dtype=bool) a.compress(condition) array([20, 30]) a[condition] array([20, 30]) compress(a >= 30, a) array([30, 40]) b = array([[10,20,30],[40,50,60]]) b.compress(b.ravel() >= 22) array([30, 40, 50, 60]) x = array([3,1,2]) y = array([50, 101]) b.compress(x >= 2, axis=1) array([[10, 30], [40, 60]]) b.compress(y >= 100, axis=0) array([[40, 50, 60]])

See also: choose, take, where, trim_zeros, unique, unique1d

concatenate()

from numpy import * x = array([[1,2],[3,4]]) y = array([[5,6],[7,8]]) concatenate((x,y)) array([[1, 2], [3, 4], [5, 6], [7, 8]]) concatenate((x,y),axis=1) array([[1, 2, 5, 6], [3, 4, 7, 8]])

See also: append, column_stack, dstack, hstack, vstack, array_split

conj()

Synonym for conjugate()

See conjugate()

conjugate()

a = array([1+2j,3-4j]) a.conj() array([ 1.-2.j, 3.+4.j]) a.conjugate() array([ 1.-2.j, 3.+4.j]) conj(a) conjugate(a)

See also: vdot

copy()

from numpy import * a = array([1,2,3]) a array([1, 2, 3]) b = a b[1] = 4 a array([1, 4, 3]) a = array([1,2,3]) b = a.copy() b[1] = 4 a array([1, 2, 3]) b array([1, 4, 3])

See also: view

corrcoef()

from numpy import * T = array([1.3, 4.5, 2.8, 3.9]) P = array([2.7, 8.7, 4.7, 8.2]) print corrcoef([T,P]) [[ 1. 0.98062258] [ 0.98062258 1. ]] rho = array([8.5, 5.2, 6.9, 6.5]) data = column_stack([T,P,rho]) print corrcoef([T,P,rho]) [[ 1. 0.98062258 -0.97090288] [ 0.98062258 1. -0.91538464] [-0.97090288 -0.91538464 1. ]]

See also: cov, var

cos()

cos(array([0, pi/2, pi])) array([ 1.00000000e+00, 6.12303177e-17, -1.00000000e+00])

cov()

from numpy import * x = array([1., 3., 8., 9.]) variance = cov(x) variance = cov(x, bias=1) T = array([1.3, 4.5, 2.8, 3.9]) P = array([2.7, 8.7, 4.7, 8.2]) cov(T,P) 3.9541666666666657 rho = array([8.5, 5.2, 6.9, 6.5]) data = column_stack([T,P,rho]) print cov(data) [[ 1.97583333 3.95416667 -1.85583333] [ 3.95416667 8.22916667 -3.57083333] [-1.85583333 -3.57083333 1.84916667]]

See also: corrcoef, std, var

cross()

from numpy import * x = array([1,2,3]) y = array([4,5,6]) cross(x,y) array([-3, 6, -3])

See also: inner, ix_, outer

cumprod()

from numpy import * a = array([1,2,3]) a.cumprod() array([1, 2, 6]) cumprod(a) array([1, 2, 6]) a = array([[1,2,3],[4,5,6]]) a.cumprod(dtype=float) array([1., 2., 6., 24., 120., 720.]) a.cumprod(axis=0) array([[ 1, 2, 3], [ 4, 10, 18]]) a.cumprod(axis=1) array([[ 1, 2, 6], [ 4, 20, 120]])

See also: accumulate, prod, cumsum

cumsum()

from numpy import * a = array([1,2,3]) a.cumsum() array([1, 3, 6]) cumsum(a) array([1, 3, 6]) a = array([[1,2,3],[4,5,6]]) a.cumsum(dtype=float) array([ 1., 3., 6., 10., 15., 21.]) a.cumsum(axis=0) array([[1, 2, 3], [5, 7, 9]]) a.cumsum(axis=1) array([[ 1, 3, 6], [ 4, 9, 15]])

See also: accumulate, sum, cumprod

delete()

from numpy import * a = array([0, 10, 20, 30, 40]) delete(a, [2,4]) array([ 0, 10, 30]) a = arange(16).reshape(4,4) a array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15]]) delete(a, s_[1:3], axis=0) array([[ 0, 1, 2, 3], [12, 13, 14, 15]]) delete(a, s_[1:3], axis=1) array([[ 0, 3], [ 4, 7], [ 8, 11], [12, 15]])

See also: append, insert

det()

from numpy import * from numpy.linalg import det A = array([[1., 2.],[3., 4.]]) det(A) -2.0

See also: inv

diag()

from numpy import * a = arange(12).reshape(4,3) print a [[ 0 1 2] [ 3 4 5] [ 6 7 8] [ 9 10 11]] print diag(a,k=0) [0 4 8] print diag(a,k=1) [1 5] print diag(array([1,4,5]),k=0) [[1 0 0] [0 4 0] [0 0 5]] print diag(array([1,4,5]),k=1) [[0 1 0 0] [0 0 4 0] [0 0 0 5] [0 0 0 0]]

See also: diagonal, diagflat, trace

diagflat()

from numpy import * x = array([[5,6],[7,8]]) diagflat(x) array([[5, 0, 0, 0], [0, 6, 0, 0], [0, 0, 7, 0], [0, 0, 0, 8]])

See also: diag, diagonal, flatten

diagonal()

from numpy import * a = arange(12).reshape(3,4) print a [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] a.diagonal() array([ 0, 5, 10]) a.diagonal(offset=1) array([ 1, 6, 11]) diagonal(a) array([ 0, 5, 10])

See also: diag, diagflat, trace

diff()

from numpy import * x = array([0,1,3,9,5,10]) diff(x) array([ 1, 2, 6, -4, 5]) diff(x,n=2) array([ 1, 4, -10, 9]) x = array([[1,3,6,10],[0,5,6,8]]) diff(x) array([[2, 3, 4], [5, 1, 2]]) diff(x,axis=0) array([[-1, 2, 0, -2]])

digitize()

from numpy import * x = array([0.2, 6.4, 3.0, 1.6]) bins = array([0.0, 1.0, 2.5, 4.0, 10.0]) d = digitize(x,bins) d array([1, 4, 3, 2]) for n in range(len(x)): ... print bins[d[n]-1], "<=", x[n], "<", bins[d[n]] ... 0.0 <= 0.2 < 1.0 4.0 <= 6.4 < 10.0 2.5 <= 3.0 < 4.0 1.0 <= 1.6 < 2.5

See also: bincount, histogram

dot()

from numpy import * x = array([[1,2,3],[4,5,6]]) x.shape (2, 3) y = array([[1,2],[3,4],[5,6]]) y.shape (3, 2) dot(x,y) array([[22, 28], [49, 64]])

import numpy if id(dot) == id(numpy.core.multiarray.dot): ... print "Not using blas/lapack!"

See also: vdot, inner, multiply

dsplit()

from numpy import * a = array([[1,2],[3,4]]) b = dstack((a,a,a,a)) b.shape (2, 2, 4) c = dsplit(b,2) print c[0].shape, c[1].shape (2, 2, 2) (2, 2, 2) d = dsplit(b,[1,2]) print d[0].shape, d[1].shape, d[2].shape (2, 2, 1) (2, 2, 1) (2, 2, 2)

See also: split, array_split, hsplit, vsplit, dstack

dstack()

from numpy import * a = array([[1,2],[3,4]]) b = array([[5,6],[7,8]]) dstack((a,b)) array([[[1, 5], [2, 6]], [[3, 7], [4, 8]]])

See also: column_stack, concatenate, hstack, vstack, dsplit

dtype()

from numpy import * dtype('int16') dtype('int16') dtype([('f1', 'int16')]) dtype([('f1', '<i2')]) dtype([('f1', [('f1', 'int16')])]) dtype([('f1', [('f1', '<i2')])]) dtype([('f1', 'uint'), ('f2', 'int32')]) dtype([('f1', '<u4'), ('f2', '<i4')]) dtype([('a','f8'),('b','S10')]) dtype([('a', '<f8'), ('b', '|S10')]) dtype("i4, (2,3)f8") dtype([('f0', '<i4'), ('f1', '<f8', (2, 3))]) dtype([('hello',('int',3)),('world','void',10)]) dtype([('hello', '<i4', 3), ('world', '|V10')]) dtype(('int16', {'x':('int8',0), 'y':('int8',1)})) dtype(('<i2', [('x', '|i1'), ('y', '|i1')])) dtype({'names':['gender','age'], 'formats':['S1',uint8]}) dtype([('gender', '|S1'), ('age', '|u1')]) dtype({'surname':('S25',0),'age':(uint8,25)}) dtype([('surname', '|S25'), ('age', '|u1')])

a = dtype('int32') a dtype('int32') a.type <type 'numpy.int32'> a.kind 'i' a.char 'l' a.num 7 a.str '<i4' a.name 'int32' a.byteorder '=' a.itemsize 4 a = dtype({'surname':('S25',0),'age':(uint8,25)}) a.fields.keys() ['age', 'surname'] a.fields.values() [(dtype('uint8'), 25), (dtype('|S25'), 0)] a = dtype([('x', 'f4'),('y', 'f4'), ... ('nested', [('i', 'i2'),('j','i2')])]) a.fields['nested'] (dtype([('i', '<i2'), ('j', '<i2')]), 8) a.fields['nested'][0].fields['i'] (dtype('int16'), 0) a.fields['nested'][0].fields['i'][0].type <type 'numpy.int16'>

See also: array, typeDict, astype

empty()

from numpy import * empty(3) array([ 6.08581638e+000, 3.45845952e-323, 4.94065646e-324]) empty((2,3),int) array([[1075337192, 1075337192, 135609024], [1084062604, 1197436517, 1129066306]])

See also: ones, zeros, eye, identity

empty_like()

from numpy import * a = array([[1,2,3],[4,5,6]]) empty_like(a) array([[ 0, 25362433, 6571520], [ 21248, 136447968, 4]])

See also: ones_like, zeros_like

expand_dims()

from numpy import * x = array([1,2]) expand_dims(x,axis=0) array([[1, 2]]) expand_dims(x,axis=1) array([[1], [2]])

See also: newaxis, atleast_1d, atleast_2d, atleast_3d

eye()

from numpy import * eye(3,4,0,dtype=float) array([[ 1., 0., 0., 0.], [ 0., 1., 0., 0.], [ 0., 0., 1., 0.]]) eye(3,4,1,dtype=float) array([[ 0., 1., 0., 0.], [ 0., 0., 1., 0.], [ 0., 0., 0., 1.]])

See also: ones, zeros, empty, identity

fft()

from numpy import * from numpy.fft import * signal = array([-2., 8., -6., 4., 1., 0., 3., 5.]) fourier = fft(signal) fourier array([ 13. +0.j , 3.36396103 +4.05025253j, 2. +1.j , -9.36396103-13.94974747j, -21. +0.j , -9.36396103+13.94974747j, 2. -1.j , 3.36396103 -4.05025253j])

N = len(signal) fourier = empty(N,complex) for k in range(N): ... fourier[k] = sum(signal * exp(-1j2pikarange(N)/N)) ... timestep = 0.1 fftfreq(N, d=timestep) array([ 0. , 1.25, 2.5 , 3.75, -5. , -3.75, -2.5 , -1.25])

See also: ifft, fftfreq, fftshift

fftfreq()

from numpy import * from numpy.fft import * signal = array([-2., 8., -6., 4., 1., 0., 3., 5.]) fourier = fft(signal) N = len(signal) timestep = 0.1 freq = fftfreq(N, d=timestep) freq array([ 0. , 1.25, 2.5 , 3.75, -5. , -3.75, -2.5 , -1.25])

fftshift(freq) array([-5. , -3.75, -2.5 , -1.25, 0. , 1.25, 2.5 , 3.75])

See also: fft, ifft, fftshift

fftshift()

from numpy import * from numpy.fft import * signal = array([-2., 8., -6., 4., 1., 0., 3., 5.]) fourier = fft(signal) N = len(signal) timestep = 0.1 freq = fftfreq(N, d=timestep) freq array([ 0. , 1.25, 2.5 , 3.75, -5. , -3.75, -2.5 , -1.25])

freq = fftshift(freq) freq array([-5. , -3.75, -2.5 , -1.25, 0. , 1.25, 2.5 , 3.75]) fourier = fftshift(fourier)

freq = ifftshift(freq) fourier = ifftshift(fourier)

See also: fft, ifft, fftfreq

fill()

from numpy import * a = arange(4, dtype=int) a array([0, 1, 2, 3]) a.fill(7) a array([7, 7, 7, 7]) a.fill(6.5) a array([6, 6, 6, 6])

See also: empty, zeros, ones, repeat

finfo()

from numpy import * f = finfo(float) f.nmant, f.nexp (52, 11) f.machep -52 f.eps array(2.2204460492503131e-16) f.precision 15 f.resolution array(1.0000000000000001e-15) f.negep -53 f.epsneg array(1.1102230246251565e-16) f.minexp -1022 f.tiny array(2.2250738585072014e-308) f.maxexp 1024 f.min, f.max (-1.7976931348623157e+308, array(1.7976931348623157e+308))

fix()

from numpy import * a = array([-1.7, -1.5, -0.2, 0.2, 1.5, 1.7]) fix(a) array([-1., -1., 0., 0., 1., 1.])

See also: round_, ceil, floor, astype

flat

from numpy import * a = array([[10,30],[40,60]]) iter = a.flat iter.next() 10 iter.next() 30 iter.next() 40

See also: broadcast, flatten

flatten()

from numpy import * a = array([[[1,2]],[[3,4]]]) print a [[[1 2]] [[3 4]]] b = a.flatten() print b [1 2 3 4]

See also: ravel, flat

fliplr()

from numpy import * a = arange(12).reshape(4,3) a array([[ 0, 1, 2], [ 3, 4, 5], [ 6, 7, 8], [ 9, 10, 11]]) fliplr(a) array([[ 2, 1, 0], [ 5, 4, 3], [ 8, 7, 6], [11, 10, 9]])

See also: flipud, rot90

flipud()

from numpy import * a = arange(12).reshape(4,3) a array([[ 0, 1, 2], [ 3, 4, 5], [ 6, 7, 8], [ 9, 10, 11]]) flipud(a) array([[ 9, 10, 11], [ 6, 7, 8], [ 3, 4, 5], [ 0, 1, 2]])

See also: fliplr, rot90

floor()

from numpy import * a = array([-1.7, -1.5, -0.2, 0.2, 1.5, 1.7]) floor(a) array([-2., -2., -1., 0., 1., 1.])

See also: ceil, round_, fix, astype

fromarrays()

from numpy import * x = array(['Smith','Johnson','McDonald']) y = array(['F','F','M'], dtype='S1') z = array([20,25,23]) data = rec.fromarrays([x,y,z], names='surname, gender, age') data[0] ('Smith', 'F', 20) data.age array([20, 25, 23])

See also: view

frombuffer()

from numpy import * buffer = "\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x08
... @\x00\x00\x00\x00\x00\x00\x10@\x00\x00\x00\x00\x00\x00\x14@\x00\x00\x00\x00\x00\x00\x18@" a = frombuffer(buffer, complex128) a array([ 1.+2.j, 3.+4.j, 5.+6.j])

See also: fromfunction, fromfile

fromfile()

from numpy import * y = array([2.,4.,6.,8.]) y.tofile("myfile.dat") y.tofile("myfile.txt", sep='\n', format = "%e") fromfile('myfile.dat', dtype=float) array([ 2., 4., 6., 8.]) fromfile('myfile.txt', dtype=float, sep='\n') array([ 2., 4., 6., 8.])

See also: loadtxt, fromfunction, tofile, frombuffer, savetxt

fromfunction()

from numpy import * def f(i,j): ... return i2 + j2 ... fromfunction(f, (3,3)) array([[0, 1, 4], [1, 2, 5], [4, 5, 8]])

See also: fromfile, frombuffer

fromiter()

from numpy import * import itertools mydata = [[55.5, 40],[60.5, 70]] mydescriptor = {'names': ('weight','age'), 'formats': (float32, int32)} myiterator = itertools.imap(tuple,mydata)

a = fromiter(myiterator, dtype = mydescriptor) a array([(55.5, 40), (60.5, 70)], dtype=[('weight', '<f4'), ('age', '<i4')])

See also: fromarrays, frombuffer, fromfile, fromfunction

generic

from numpy import * numpyscalar = string_('7') numpyscalar '7' type(numpyscalar) <type 'numpy.string_'> buildinscalar = '7' type(buildinscalar) <type 'str'> isinstance(numpyscalar, generic) True isinstance(buildinscalar, generic) False

gumbel()

from numpy import * from numpy.random import * gumbel(loc=0.0,scale=1.0,size=(2,3)) array([[-1.25923601, 1.68758144, 1.76620507], [ 1.96820048, -0.21219499, 1.83579566]]) from pylab import * hist(gumbel(0,1,(1000)), 50)

See also: random_sample, uniform, poisson, seed

histogram()

from numpy import * x = array([0.2, 6.4, 3.0, 1.6, 0.9, 2.3, 1.6, 5.7, 8.5, 4.0, 12.8]) bins = array([0.0, 1.0, 2.5, 4.0, 10.0]) N,bins = histogram(x,bins) N,bins (array([2, 3, 1, 4]), array([ 0. , 1. , 2.5, 4. , 10. ])) for n in range(len(bins)-1): ... print "# ", N[n], "number fall into bin [", bins[n], ",", bins[n+1], "[" ...

N,bins = histogram(x,5,range=(0.0, 10.0)) N,bins (array([4, 2, 2, 1, 2]), array([ 0., 2., 4., 6., 8.])) N,bins = histogram(x,5,range=(0.0, 10.0), normed=True) N,bins (array([ 0.18181818, 0.09090909, 0.09090909, 0.04545455, 0.09090909]), array([ 0., 2., 4., 6., 8.]))

See also: bincount, digitize

hsplit()

from numpy import * a = array([[1,2,3,4],[5,6,7,8]]) hsplit(a,2) [array([[1, 2], [5, 6]]), array([[3, 4], [7, 8]])] hsplit(a,[1,2]) [array([[1], [5]]), array([[2], [6]]), array([[3, 4], [7, 8]])]

See also: split, array_split, dsplit, vsplit, hstack

hstack()

from numpy import * a =array([[1],[2]]) b = array([[3,4],[5,6]]) hstack((a,b,a)) array([[1, 3, 4, 1], [2, 5, 6, 2]])

See also: column_stack, concatenate, dstack, vstack, hsplit

hypot()

from numpy import * hypot(3.,4.) 5.0 z = array([2+3j, 3+4j]) hypot(z.real, z.imag) array([ 3.60555128, 5. ])

See also: angle, abs

identity()

from numpy import * identity(3,float) array([[ 1., 0., 0.], [ 0., 1., 0.], [ 0., 0., 1.]])

See also: empty, eye, ones, zeros

ifft()

from numpy import * from numpy.fft import * signal = array([-2., 8., -6., 4., 1., 0., 3., 5.]) fourier = fft(signal) ifft(fourier) array([-2. +0.00000000e+00j, 8. +1.51410866e-15j, -6. +3.77475828e-15j, 4. +2.06737026e-16j, 1. +0.00000000e+00j, 0. -1.92758271e-15j, 3. -3.77475828e-15j, 5. +2.06737026e-16j])

allclose(signal.astype(complex), ifft(fft(signal))) True

N = len(fourier) signal = empty(N,complex) for k in range(N): ... signal[k] = sum(fourier * exp(+1j2pikarange(N)/N)) / N

See also: fft, fftfreq, fftshift

imag

from numpy import * a = array([1+2j,3+4j,5+6j]) a.imag array([ 2., 4., 6.]) a.imag = 9 a array([ 1.+9.j, 3.+9.j, 5.+9.j]) a.imag = array([9,8,7]) a array([ 1.+9.j, 3.+8.j, 5.+7.j])

See also: real, angle

index_exp[]

from numpy import * myslice = index_exp[2:4,...,4,::-1] print myslice (slice(2, 4, None), Ellipsis, 4, slice(None, None, -1))

See also: slice, s_

indices()

from numpy import * indices((2,3)) array([[[0, 0, 0], [1, 1, 1]], [[0, 1, 2], [0, 1, 2]]]) a = array([ [ 0, 1, 2, 3, 4], ... [10,11,12,13,14], ... [20,21,22,23,24], ... [30,31,32,33,34] ]) i,j = indices((2,3)) a[i,j] array([[ 0, 1, 2], [10, 11, 12]])

See also: mgrid, [], ix_, slice

inf

from numpy import * exp(array([1000.])) array([ inf]) x = array([2,-inf,1,inf]) isfinite(x) array([True, False, True, False], dtype=bool) isinf(x) array([False, True, False, True], dtype=bool) isposinf(x) array([False, False, False, True], dtype=bool) isneginf(x) array([False, True, False, False], dtype=bool) nan_to_num(x) array([ 2.00000000e+000, -1.79769313e+308, 1.00000000e+000, 1.79769313e+308])

See also: nan, finfo

inner()

from numpy import * x = array([1,2,3]) y = array([10,20,30]) inner(x,y) 140

See also: cross, outer, dot

insert()

from numpy import * a = array([10,20,30,40]) insert(a,[1,3],50) array([10, 50, 20, 30, 50, 40]) insert(a,[1,3],[50,60]) array([10, 50, 20, 30, 60, 40]) a = array([[10,20,30],[40,50,60],[70,80,90]]) insert(a, [1,2], 100, axis=0) array([[ 10, 20, 30], [100, 100, 100], [ 40, 50, 60], [100, 100, 100], [ 70, 80, 90]]) insert(a, [0,1], [[100],[200]], axis=0) array([[100, 100, 100], [ 10, 20, 30], [200, 200, 200], [ 40, 50, 60], [ 70, 80, 90]]) insert(a, [0,1], [100,200], axis=1) array([[100, 10, 200, 20, 30], [100, 40, 200, 50, 60], [100, 70, 200, 80, 90]])

See also: delete, append

inv()

from numpy import * from numpy.linalg import inv a = array([[3,1,5],[1,0,8],[2,1,4]]) print a [[3 1 5] [1 0 8] [2 1 4]] inva = inv(a) print inva [[ 1.14285714 -0.14285714 -1.14285714] [-1.71428571 -0.28571429 2.71428571] [-0.14285714 0.14285714 0.14285714]] dot(a,inva) array([[ 1.00000000e-00, 2.77555756e-17, 3.60822483e-16], [ 0.00000000e+00, 1.00000000e+00, 0.00000000e+00], [ -1.11022302e-16, 0.00000000e+00, 1.00000000e+00]])

See also: solve, pinv, det

iscomplex()

import numpy as np a = np.array([1,2,3.j]) np.iscomplex(a) array([False, False, True], dtype=bool)

iscomplexobj()

import numpy as np a = np.array([1,2,3.j]) np.iscomplexobj(a) True a = np.array([1,2,3]) np.iscomplexobj(a) False a = np.array([1,2,3], dtype=np.complex) np.iscomplexobj(a) True

item()

from numpy import * a = array([5]) type(a[0]) <type 'numpy.int32'> a.item() 5 type(a.item()) <type 'int'> b = array([2,3,4]) b[1].item() 3 type(b[1].item()) <type 'int'> b.item(2) 4 type(b.item(2)) <type 'int'> type(b[2]) <type 'numpy.int32'>

See also: []

ix_()

from numpy import * a = arange(9).reshape(3,3) print a [[0 1 2] [3 4 5] [6 7 8]] indices = ix_([0,1,2],[1,2,0]) print indices (array([[0], [1], [2]]), array([[1, 2, 0]])) print a[indices] [[1 2 0] [4 5 3] [7 8 6]]

... ... ...

See also: [], indices, cross, outer

lexsort()

from numpy import * serialnr = array([1023, 5202, 6230, 1671, 1682, 5241]) height = array([40., 42., 60., 60., 98., 40.]) width = array([50., 20., 70., 60., 15., 30.])

indices = lexsort(keys = (width, height)) indices array([5, 0, 1, 3, 2, 4]) for n in indices: ... print serialnr[n], height[n], width[n] ... 5241 40.0 30.0 1023 40.0 50.0 5202 42.0 20.0 1671 60.0 60.0 6230 60.0 70.0 1682 98.0 15.0

a = vstack([serialnr,width,height]) print a [[ 1023. 5202. 6230. 1671. 1682. 5241.] [ 50. 20. 70. 60. 15. 30.] [ 40. 42. 60. 60. 98. 40.]] indices = lexsort(a) a.take(indices, axis=-1) array([[ 5241., 1023., 5202., 1671., 6230., 1682.], [ 30., 50., 20., 60., 70., 15.], [ 40., 40., 42., 60., 60., 98.]])

See also: sort, argsort

linspace()

from numpy import * linspace(0,5,num=6) array([ 0., 1., 2., 3., 4., 5.]) linspace(0,5,num=10) array([ 0. , 0.55555556, 1.11111111, 1.66666667, 2.22222222, 2.77777778, 3.33333333, 3.88888889, 4.44444444, 5. ]) linspace(0,5,num=10,endpoint=False) array([ 0. , 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5]) stepsize = linspace(0,5,num=10,endpoint=False,retstep=True) stepsize (array([ 0. , 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5]), 0.5) myarray, stepsize = linspace(0,5,num=10,endpoint=False,retstep=True) stepsize 0.5

See also: arange, logspace, r_

loadtxt()

from numpy import *

data = loadtxt("myfile.txt") t,z = data[:,0], data[:,3]

t,x,y,z = loadtxt("myfile.txt", unpack=True) t,z = loadtxt("myfile.txt", usecols = (0,3), unpack=True) data = loadtxt("myfile.txt", skiprows = 7) data = loadtxt("myfile.txt", comments = '!') data = loadtxt("myfile.txt", delimiter=';') data = loadtxt("myfile.txt", dtype = int)

See also: savetxt, fromfile

logical_and()

from numpy import * logical_and(array([0,0,1,1]), array([0,1,0,1])) array([False, False, False, True], dtype=bool) logical_and(array([False,False,True,True]), array([False,True,False,True])) array([False, False, False, True], dtype=bool)

See also: logical_or, logical_not, logical_xor, bitwise_and

logical_not()

from numpy import * logical_not(array([0,1])) logical_not(array([False,True]))

See also: logical_or, logical_not, logical_xor, bitwise_and

logical_or()

from numpy import * logical_or(array([0,0,1,1]), array([0,1,0,1])) logical_or(array([False,False,True,True]), array([False,True,False,True]))

See also: logical_and, logical_not, logical_xor, bitwise_or

logical_xor()

from numpy import * logical_xor(array([0,0,1,1]), array([0,1,0,1])) logical_xor(array([False,False,True,True]), array([False,True,False,True]))

See also: logical_or, logical_not, logical_or, bitwise_xor

logspace()

from numpy import * logspace(-2, 3, num = 6) array([ 1.00000000e-02, 1.00000000e-01, 1.00000000e+00, 1.00000000e+01, 1.00000000e+02, 1.00000000e+03]) logspace(-2, 3, num = 10) array([ 1.00000000e-02, 3.59381366e-02, 1.29154967e-01, 4.64158883e-01, 1.66810054e+00, 5.99484250e+00, 2.15443469e+01, 7.74263683e+01, 2.78255940e+02, 1.00000000e+03]) logspace(-2, 3, num = 6, endpoint=False) array([ 1.00000000e-02, 6.81292069e-02, 4.64158883e-01, 3.16227766e+00, 2.15443469e+01, 1.46779927e+02]) exp(linspace(log(0.01), log(1000), num=6, endpoint=False)) array([ 1.00000000e-02, 6.81292069e-02, 4.64158883e-01, 3.16227766e+00, 2.15443469e+01, 1.46779927e+02])

See also: arange, linspace, r_

lstsq()

lstsq() is most often used in the context of least-squares fitting of data. Suppose you obtain some noisy data y as a function of a variable t, e.g. velocity as a function of time. You can use lstsq() to fit a model to the data, if the model is linear in its parameters, that is if

y = p0 * f0(t) + p1 * f1(t) + ... + pN-1 * fN-1(t) + noise

where the pi are the parameters you want to obtain through fitting and the fi(t) are known functions of t. What follows is an example how you can do this.

First, for the example's sake, some data is simulated:

from numpy import * from numpy.random import normal t = arange(0.0, 10.0, 0.05) y = 2.0 * sin(2.pit0.6) + 2.7 * cos(2.pit0.6) + normal(0.0, 1.0, len(t))

We would like to fit this data with: model(t) = p0 * sin(2.*pi*t*0.6) + p1 * cos(2.*pi*t*0.6), where p0 and p1 are the unknown fit parameters. Here we go:

from numpy.linalg import lstsq Nparam = 2 A = zeros((len(t),Nparam), float) A[:,0] = sin(2.pit0.6) A[:,1] = cos(2.pit0.6) (p, residuals, rank, s) = lstsq(A,y) p array([ 1.9315685 , 2.71165171]) residuals array([ 217.23783374]) rank 2 s array([ 10., 10.])

See also: pinv, polyfit, solve

mat()

from numpy import * mat('1 3 4; 5 6 9') matrix([[1, 3, 4], [5, 6, 9]]) a = array([[1,2],[3,4]]) m = mat(a) m matrix([[1, 2], [3, 4]]) a[0] array([1, 2]) m[0] matrix([[1, 2]]) a.ravel() array([1, 2, 3, 4]) m.ravel() matrix([[1, 2, 3, 4]]) aa array([[ 1, 4], [ 9, 16]]) mm matrix([[ 7, 10], [15, 22]]) a3 array([[ 1, 8], [27, 64]]) m3 matrix([[ 37, 54], [ 81, 118]]) m.T matrix([[1, 3], [2, 4]]) m.H matrix([[1, 3], [2, 4]]) m.I matrix([[-2. , 1. ], [ 1.5, -0.5]])

See also: bmat, array, dot, asmatrix

matrix()

from numpy import * matrix('1 3 4; 5 6 9') matrix([[1, 3, 4], [5, 6, 9]])

See also: mat, asmatrix

max()

from numpy import * a = array([10,20,30]) a.max() 30 a = array([[10,50,30],[60,20,40]]) a.max() 60 a.max(axis=0) array([60, 50, 40]) a.max(axis=1) array([50, 60]) max(a)

See also: nan, argmax, maximum, ptp

maximum()

from numpy import * a = array([1,0,5]) b = array([3,2,4]) maximum(a,b) array([3, 2, 5]) max(a.tolist(),b.tolist()) [3, 2, 4]

See also: minimum, max, argmax

mean()

from numpy import * a = array([1,2,7]) a.mean() 3.3333333333333335 a = array([[1,2,7],[4,9,6]]) a.mean() 4.833333333333333 a.mean(axis=0) array([ 2.5, 5.5, 6.5]) a.mean(axis=1) array([ 3.33333333, 6.33333333])

See also: average, median, var, std, sum

median()

from numpy import * a = array([1,2,3,4,9]) median(a) 3 a = array([1,2,3,4,9,0]) median(a) 2.5

See also: average, mean, var, std

mgrid[]

from numpy import * m = mgrid[1:3,2:5] print m [[[1 1 1] [2 2 2]] [[2 3 4] [2 3 4]]] m[0,1,2] 2 m[1,1,2] 4

See also: indices, ogrid

min()

from numpy import * a = array([10,20,30]) a.min() 10 a = array([[10,50,30],[60,20,40]]) a.min() 10 a.min(axis=0) array([10, 20, 30]) a.min(axis=1) array([10, 20]) min(a)

See also: nan, max, minimum, argmin, ptp

minimum()

from numpy import * a = array([1,0,5]) b = array([3,2,4]) minimum(a,b) array([1, 0, 4]) min(a.tolist(),b.tolist()) [1, 0, 5]

See also: min, maximum, argmin

multiply()

from numpy import * multiply(array([3,6]), array([4,7])) array([12, 42])

See also: dot

nan

from numpy import * sqrt(array([-1.0])) array([ nan]) x = array([2, nan, 1]) isnan(x) array([False, True, False], dtype=bool) isfinite(x) array([True, False, True], dtype=bool) nansum(x) 3.0 nanmax(x) 2.0 nanmin(x) 1.0 nanargmin(x) 2 nanargmax(x) 0 nan_to_num(x) array([ 2., 0., 1.])

See also: inf

ndenumerate()

from numpy import * a = arange(9).reshape(3,3) + 10 a array([[10, 11, 12], [13, 14, 15], [16, 17, 18]]) b = ndenumerate(a) for position,value in b: print position,value ... (0, 0) 10 (0, 1) 11 (0, 2) 12 (1, 0) 13 (1, 1) 14 (1, 2) 15 (2, 0) 16 (2, 1) 17 (2, 2) 18

See also: broadcast, ndindex

ndim

from numpy import * a = arange(12).reshape(3,4) a array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) a.ndim 2 a.shape = (2,2,3) array([[[ 0, 1, 2], [ 3, 4, 5]], [[ 6, 7, 8], [ 9, 10, 11]]]) a.ndim 3 len(a.shape) 3

See also: shape

ndindex()

for index in ndindex(4,3,2): print index (0,0,0) (0,0,1) (0,1,0) ... (3,1,1) (3,2,0) (3,2,1)

See also: broadcast, ndenumerate

newaxis

from numpy import * x = arange(3) x array([0, 1, 2]) x[:,newaxis] array([[0], [1], [2]]) x[:,newaxis,newaxis] array([[[0]], [[1]], [[2]]]) x[:,newaxis] * x array([[0, 0, 0], [0, 1, 2], [0, 2, 4]]) y = arange(3,6) x[:,newaxis] * y array([[ 0, 0, 0], [ 3, 4, 5], [ 6, 8, 10]]) x.shape (3,) x[newaxis,:].shape (1,3) x[:,newaxis].shape (3,1)

See also: [], atleast_1d, atleast_2d, atleast_3d, expand_dims

nonzero()

from numpy import * x = array([1,0,2,-1,0,0,8]) indices = x.nonzero() indices (array([0, 2, 3, 6]),) x[indices] array([1, 2, -1, 8]) y = array([[0,1,0],[2,0,3]]) indices = y.nonzero() indices (array([0, 1, 1]), array([1, 0, 2])) y[indices[0],indices[1]] array([1, 2, 3]) y[indices] array([1, 2, 3]) y = array([1,3,5,7]) indices = (y >= 5).nonzero() y[indices] array([5, 7]) nonzero(y) (array([0, 1, 2, 3]),)

See also: [], where, compress, choose, take

ogrid()

from numpy import * x,y = ogrid[0:3,0:3] x array([[0], [1], [2]]) y array([[0, 1, 2]]) print x*y [[0 0 0] [0 1 2] [0 2 4]]

See also: mgrid

ones()

from numpy import * ones(5) array([ 1., 1., 1., 1., 1.]) ones((2,3), int) array([[1, 1, 1], [1, 1, 1]])

See also: ones_like, zeros, empty, eye, identity

ones_like()

from numpy import * a = array([[1,2,3],[4,5,6]]) ones_like(a) array([[1, 1, 1], [1, 1, 1]])

See also: ones, zeros_like

outer()

from numpy import * x = array([1,2,3]) y = array([10,20,30]) outer(x,y) array([[10, 20, 30], [20, 40, 60], [30, 60, 90]])

See also: inner, cross

permutation()

from numpy import * from numpy.random import permutation permutation(4) array([0, 3, 1, 2]) permutation(4) array([2, 1, 0, 3]) permutation(4) array([3, 0, 2, 1])

See also: shuffle, bytes, seed

piecewise()

from numpy import * f1 = lambda x: xx f2 = lambda x: 2x x = arange(-2.,3.,0.1) condition = (x>1)&(x<2) y = piecewise(x,condition, [f1,1.]) y = piecewise(x, fabs(x)<=1, [f1,0]) + piecewise(x, x>1, [f2,0]) print y

See also: select

pinv()

from numpy import * from numpy.linalg import pinv,svd,lstsq A = array([[1., 3., 5.],[2., 4., 6.]]) b = array([1., 3.])

pinvA = pinv(A) print pinvA [[-1.33333333 1.08333333] [-0.33333333 0.33333333] [ 0.66666667 -0.41666667]] x = dot(pinvA, b) print x [ 1.91666667 0.66666667 -0.58333333]

x,resids,rank,s = lstsq(A,b) print x [ 1.91666667 0.66666667 -0.58333333]

U,sigma,V = svd(A) S = zeros_like(A.transpose()) for n in range(len(sigma)): S[n,n] = 1. / sigma[n] dot(V.transpose(), dot(S, U.transpose())) array([[-1.33333333, 1.08333333], [-0.33333333, 0.33333333], [ 0.66666667, -0.41666667]])

See also: inv, lstsq, solve, svd

poisson()

from numpy import * from numpy.random import * poisson(lam=0.5, size=(2,3)) array([[2, 0, 0], [1, 1, 0]])

See also: random_sample, uniform, standard_normal, seed

poly1d()

from numpy import * p1 = poly1d([2,3],r=1) print p1 2 1 x - 5 x + 6 p2 = poly1d([2,3],r=0) print p2 2 x + 3 print p1+p2 2 1 x - 3 x + 9 quotient,remainder = p1/p2 print quotient,remainder 0.5 x - 3 15 p3 = p1*p2 print p3 3 2 2 x - 7 x - 3 x + 18 p3([1,2,3,4]) array([10, 0, 0, 22]) p3[2] -7 p3.r array([-1.5, 3. , 2. ]) p3.c array([ 2, -7, -3, 18]) p3.o 3 print p3.deriv(m=2) 12 x - 14 print p3.integ(m=2,k=[1,2]) 5 4 3 2 0.1 x - 0.5833 x - 0.5 x + 9 x + 1 x + 2

polyfit()

from numpy import * x = array([1,2,3,4,5]) y = array([6, 11, 18, 27, 38]) polyfit(x,y,2) array([ 1., 2., 3.]) polyfit(x,y,1) array([ 8., -4.])

See also: lstsq

prod()

from numpy import * a = array([1,2,3]) a.prod() 6 prod(a) 6 a = array([[1,2,3],[4,5,6]]) a.prod(dtype=float) 720.0 a.prod(axis=0) array([ 4, 10, 18]) a.prod(axis=1) array([ 6, 120])

See also: cumprod, sum

ptp()

from numpy import * a = array([5,15,25]) a.ptp() 20 a = array([[5,15,25],[3,13,33]]) a.ptp() 30 a.ptp(axis=0) array([2, 2, 8]) a.ptp(axis=1) array([20, 30])

See also: max, min

put()

from nump import * a = array([10,20,30,40]) a.put([60,70,80], [0,3,2]) a array([60, 20, 80, 70]) a[[0,3,2]] = [60,70,80] a.put([40,50], [0,3,2,1]) a array([40, 50, 40, 50]) put(a, [0,3], [90]) a array([90, 50, 40, 90])

See also: putmask, take

putmask()

from nump import * a = array([10,20,30,40]) mask = array([True,False,True,True]) a.putmask([60,70,80,90], mask) a array([60, 20, 80, 90]) a = array([10,20,30,40]) a[mask] array([60, 80, 90]) a[mask] = array([60,70,80,90]) a array([60, 20, 70, 80]) a.putmask([10,90], mask) a array([10, 20, 10, 90]) putmask(a, mask, [60,70,80,90])

See also: put, take

r_[]

from numpy import * r_[1:5] array([1, 2, 3, 4]) r_[1:10:4] array([1, 5, 9]) r_[1:10:4j] array([ 1., 4., 7., 10.]) r_[1:5,7,1:10:4] array([1, 2, 3, 4, 7, 1, 5, 9]) r_['r', 1:3] matrix([[1, 2]]) r_['c',1:3] matrix([[1], [2]]) a = array([[1,2,3],[4,5,6]]) r_[a,a] array([[1, 2, 3], [4, 5, 6], [1, 2, 3], [4, 5, 6]]) r_['-1',a,a] array([[1, 2, 3, 1, 2, 3], [4, 5, 6, 4, 5, 6]])

See also: c_, s_, arange, linspace, hstack, vstack, column_stack, concatenate, bmat

rand()

from numpy import * from numpy.random import * rand(3,2) array([[ 0.65159297, 0.78872335], [ 0.09385959, 0.02834748], [ 0.8357651 , 0.43276707]])

See also: random_sample, seed

randint()

Synonym for random_integers()

See random_integers

randn()

randn(2,3) array([[ 1.22497074, -0.29508896, -0.75040033], [-0.54822685, -0.98032155, -1.40467696]])

See also: standard_normal, poisson, seed

random_integers()

from numpy import * from numpy.random import * random_integers(-1,5,(2,2)) array([[ 3, -1], [-1, 0]])

See also: random_sample, uniform, poisson, seed

random_sample()

from numpy import * from numpy.random import * random_sample((3,2)) array([[ 0.76228008, 0.00210605], [ 0.44538719, 0.72154003], [ 0.22876222, 0.9452707 ]])

See also: ranf, sample, rand, seed

ranf()

Synonym for random_sample

See random_sample, sample

ravel()

from numpy import * a = array([[1,2],[3,4]]) a.ravel() array([1, 2, 3, 4]) b = a[:,0].ravel() b array([1, 3]) c = a[0,:].ravel() c array([1, 2]) b[0] = -1 c[1] = -2 a array([[ 1, -2], [ 3, 4]]) ravel(a)

See also: flatten

real

from numpy import * a = array([1+2j,3+4j,5+6j]) a.real array([ 1., 3., 5.]) a.real = 9 a array([ 9.+2.j, 9.+4.j, 9.+6.j]) a.real = array([9,8,7]) a array([ 9.+2.j, 8.+4.j, 7.+6.j])

See also: imag, angle

recarray()

from numpy import * num = 2 a = recarray(num, formats='i4,f8,f8',names='id,x,y') a['id'] = [3,4] a['id'] array([3, 4]) a = rec.fromrecords([(35,1.2,7.3),(85,9.3,3.2)], names='id,x,y') a['id'] array([35, 85])

See also: array, dtype

reduce()

from numpy import * add.reduce(array([1.,2.,3.,4.])) 10.0 multiply.reduce(array([1.,2.,3.,4.])) 24.0 add.reduce(array([[1,2,3],[4,5,6]]), axis = 0) array([5, 7, 9]) add.reduce(array([[1,2,3],[4,5,6]]), axis = 1) array([ 6, 15])

See also: accumulate, sum, prod

repeat()

from numpy import * repeat(7., 4) array([ 7., 7., 7., 7.]) a = array([10,20]) a.repeat([3,2]) array([10, 10, 10, 20, 20]) repeat(a, [3,2]) a = array([[10,20],[30,40]]) a.repeat([3,2,1,1]) array([10, 10, 10, 20, 20, 30, 40]) a.repeat([3,2],axis=0) array([[10, 20], [10, 20], [10, 20], [30, 40], [30, 40]]) a.repeat([3,2],axis=1) array([[10, 10, 10, 20, 20], [30, 30, 30, 40, 40]])

See also: tile

reshape()

from numpy import * x = arange(12) x.reshape(3,4) array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) x.reshape(3,2,2) array([[[ 0, 1], [ 2, 3]], [[ 4, 5], [ 6, 7]], [[ 8, 9], [10, 11]]]) x.reshape(2,-1) array([[ 0, 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10, 11]]) x.reshape(12) array([0,1,2,3,4,5,6,7,8,9,10,11]) reshape(x,(2,6))

See also: shape, resize

resize()

from numpy import * a = array([1,2,3,4]) a.resize(2,2) print a [[1 2] [3 4]] a.resize(3,2) print a [[1 2] [3 4] [0 0]] a.resize(2,4) print a [[1 2 3 4] [0 0 0 0]] a.resize(2,1) print a [[1] [2]]

But, there is a caveat:

b = array([1,2,3,4]) c = b # c is reference to b, it doesn't 'own' its data c.resize(2,2) # no problem, nr of elements doesn't change c.resize(2,3) # doesn't work, c is only a reference Traceback (most recent call last): File "", line 1, in ? ValueError: cannot resize an array that has been referenced or is referencing another array in this way. Use the resize function b.resize(2,3) # doesn't work, b is referenced by another array Traceback (most recent call last): File "", line 1, in ? ValueError: cannot resize an array that has been referenced or is referencing another array in this way. Use the resize function

and it's not always obvious what the reference is:

d = arange(4) d array([0, 1, 2, 3]) d.resize(5) # doesn't work, but where's the reference? Traceback (most recent call last): File "", line 1, in ? ValueError: cannot resize an array that has been referenced or is referencing another array in this way. Use the resize function _ # '_' was a reference to d! array([0, 1, 2, 3]) d = resize(d, 5) # this does work, however d array([0, 1, 2, 3, 0])

See also: reshape

rollaxis()

from numpy import * a = arange(345).reshape(3,4,5) a.shape (3, 4, 5) b = rollaxis(a,1,0) b.shape (4, 3, 5) b = rollaxis(a,0,2) b.shape (4, 3, 5)

See also: swapaxes, transpose

round()

round(decimals=0, out=None) -> reference to rounded values.

from numpy import * array([1.2345, -1.647]).round() array([ 1., -2.]) array([1, -1]).round() array([ 1, -1]) array([1.2345, -1.647]).round(decimals=1) array([ 1.2, -1.6]) array([1.2345+2.34j, -1.647-0.238j]).round() array([ 1.+2.j, -2.-0.j]) array([0.0, 0.5, 1.0, 1.5, 2.0, 2.5]).round() array([ 0., 0., 1., 2., 2., 2.]) a = zeros(3, dtype=int) array([1.2345, -1.647, 3.141]).round(out=a) array([ 1, -2, 3]) a array([ 1, -2, 3]) round_(array([1.2345, -1.647])) array([ 1., -2.]) around(array([1.2345, -1.647])) array([ 1., -2.])

See also: ceil, floor, fix, astype

rot90()

from numpy import * a = arange(12).reshape(4,3) a array([[ 0, 1, 2], [ 3, 4, 5], [ 6, 7, 8], [ 9, 10, 11]]) rot90(a) array([[ 2, 5, 8, 11], [ 1, 4, 7, 10], [ 0, 3, 6, 9]])

See also: fliplr, flipud

s_[]

from numpy import * s_[1:5] slice(1, 5, None) s_[1:10:4] slice(1, 10, 4) s_[1:10:4j] slice(1, 10, 4j) s_['r',1:3] ('r', slice(1, 3, None)) s_['c',1:3] ('c', slice(1, 3, None))

See also: r_, c_, slice, index_exp

sample()

Synonym for random_sample

See also: random_sample, ranf

savetxt()

from numpy import * savetxt("myfile.txt", data) savetxt("myfile.txt", x) savetxt("myfile.txt", (x,y)) savetxt("myfile.txt", transpose((x,y))) savetxt("myfile.txt", transpose((x,y)), fmt='%6.3f') savetxt("myfile.txt", data, delimiter = ';')

See also: loadtxt, tofile

searchsorted()

searchsorted(keys, side="left")

from numpy import * a = array([1,2,2,3]) a.searchsorted(2) 1 a.searchsorted(2, side='right') 3 a.searchsorted(4) 4 a.searchsorted([[1,2],[2,3]]) array([[0, 1], [1, 3]]) searchsorted(a,2) 1

See also: sort, histogram

seed()

seed([1]) rand(3) array([ 0.13436424, 0.84743374, 0.76377462]) seed([1]) rand(3) array([ 0.13436424, 0.84743374, 0.76377462]) rand(3) array([ 0.25506903, 0.49543509, 0.44949106])

select()

from numpy import * x = array([5., -2., 1., 0., 4., -1., 3., 10.]) select([x < 0, x == 0, x <= 5], [x-0.1, 0.0, x+0.2], default = 100.) array([ 5.2, -2.1, 1.2, 0. , 4.2, -1.1, 3.2, 100. ])

result = zeros_like(x) for n in range(len(x)): ... if x[n] < 0: result[n] = x[n]-0.1 ... elif x[n] == 0: result[n] = 0.0 ... elif x[n] <= 5: result[n] = x[n]+0.2 ... else: result[n] = 100. ... result array([ 5.2, -2.1, 1.2, 0. , 4.2, -1.1, 3.2, 100. ])

See also: choose, piecewise

set_printoptions()

from numpy import * x = array([pi, 1.e-200]) x array([ 3.14159265e+000, 1.00000000e-200]) set_printoptions(precision=3, suppress=True) x array([ 3.142, 0. ])

help(set_printoptions)

shape

from numpy import * x = arange(12) x.shape (12,) x.shape = (3,4) x array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) x.shape = (3,2,2) x array([[[ 0, 1], [ 2, 3]], [[ 4, 5], [ 6, 7]], [[ 8, 9], [10, 11]]]) x.shape = (2,-1) x array([[ 0, 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10, 11]]) x.shape = 12 x array([0,1,2,3,4,5,6,7,8,9,10,11])

See also: reshape

shuffle()

from numpy import * from numpy.random import shuffle x = array([1,50,-1,3]) shuffle(x) print x [-1 3 50 1] x = ['a','b','c','z'] shuffle(x) print x ['a', 'c', 'z', 'b']

See also: permutation, bytes

slice()

s = slice(3,9,2) from numpy import * a = arange(20) a[s] array([3, 5, 7]) a[3:9:2] array([3, 5, 7])

See also: [], ..., newaxis, s_, ix_, indices, index_exp

solve()

from numpy import * from numpy.linalg import solve

a = array([[3,1,5],[1,0,8],[2,1,4]]) b = array([6,7,8]) x = solve(a,b) print x [-3.28571429 9.42857143 1.28571429]

dot(a,x) array([ 6., 7., 8.])

See also: inv

sometrue()

from numpy import * b = array([True, False, True, True]) sometrue(b) True a = array([1, 5, 2, 7]) sometrue(a >= 5) True

See also: alltrue, all, any

sort()

sort(axis=-1, kind="quicksort")

from numpy import * a = array([2,0,8,4,1]) a.sort() a array([0, 1, 2, 4, 8]) a.sort(kind='mergesort') a = array([[8,4,1],[2,0,9]]) a.sort(axis=0) a array([[2, 0, 1], [8, 4, 9]]) a = array([[8,4,1],[2,0,9]]) a.sort(axis=1) a array([[1, 4, 8], [0, 2, 9]]) sort(a)

See also: argsort, lexsort

split()

from numpy import * a = array([[1,2,3,4],[5,6,7,8]]) split(a,2,axis=0) array([[1, 2, 3, 4]]), array([[5, 6, 7, 8]])] split(a,4,axis=1) [array([[1], [5]]), array([[2], [6]]), array([[3], [7]]), array([[4], [8]])] split(a,3,axis=1) Traceback (most recent call last): ValueError: array split does not result in an equal division split(a,[2,3],axis=1) [array([[1, 2], [5, 6]]), array([[3], [7]]), array([[4], [8]])]

See also: dsplit, hsplit, vsplit, array_split, concatenate

squeeze()

from numpy import * a = arange(6) a = a.reshape(1,2,1,1,3,1) a array([[[[[[0], [1], [2]]]], [[[[3], [4], [5]]]]]]) a.squeeze() array([[0, 1, 2], [3, 4, 5]]) squeeze(a)

std()

from numpy import * a = array([1.,2,7]) a.std() 2.6246692913372702 a = array([[1.,2,7],[4,9,6]]) a.std() 2.793842435706702 a.std(axis=0) array([ 1.5, 3.5, 0.5]) a.std(axis=1) array([ 2.62466929, 2.05480467])

See also: mean, var, cov

standard_normal()

standard_normal((2,3)) array([[ 1.12557608, -0.13464922, -0.35682992], [-1.54090277, 1.21551589, -1.82854551]])

See also: randn, uniform, poisson, seed

sum()

from numpy import * a = array([1,2,3]) a.sum() 6 sum(a) a = array([[1,2,3],[4,5,6]]) a.sum() 21 a.sum(dtype=float) 21.0 a.sum(axis=0) array([5, 7, 9]) a.sum(axis=1) array([ 6, 15])

See also: accumulate, nan, cumsum, prod

svd()

from numpy import * from numpy.linalg import svd A = array([[1., 3., 5.],[2., 4., 6.]]) U,sigma,V = svd(A) print U [[-0.61962948 -0.78489445] [-0.78489445 0.61962948]] print sigma [ 9.52551809 0.51430058] print V [[-0.2298477 -0.52474482 -0.81964194] [ 0.88346102 0.24078249 -0.40189603] [ 0.40824829 -0.81649658 0.40824829]] Sigma = zeros_like(A) n = min(A.shape) Sigma[:n,:n] = diag(sigma) print dot(U,dot(Sigma,V)) [[ 1. 3. 5.] [ 2. 4. 6.]]

See also: pinv

swapaxes()

from numpy import * a = arange(30) a = a.reshape(2,3,5) a array([[[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14]], [[15, 16, 17, 18, 19], [20, 21, 22, 23, 24], [25, 26, 27, 28, 29]]]) b = a.swapaxes(1,2) b array([[[ 0, 5, 10], [ 1, 6, 11], [ 2, 7, 12], [ 3, 8, 13], [ 4, 9, 14]], [[15, 20, 25], [16, 21, 26], [17, 22, 27], [18, 23, 28], [19, 24, 29]]]) b.shape (2, 5, 3) b[0,0,0] = -1 print a[0,0,0]

See also: transpose, rollaxis

T

from numpy import * x = array([[1.,2.],[3.,4.]]) x array([[ 1., 2.], [ 3., 4.]]) x.T array([[ 1., 3.], [ 2., 4.]])

See also: transpose

take()

from numpy import * a= array([10,20,30,40]) a.take([0,0,3]) array([10, 10, 40]) a[[0,0,3]] array([10, 10, 40]) a.take([[0,1],[0,1]]) array([[10, 20], [10, 20]]) a = array([[10,20,30],[40,50,60]]) a.take([0,2],axis=1) array([[10, 30], [40, 60]]) take(a,[0,2],axis=1)

See also: [], put, putmask, compress, choose

tensordot()

from numpy import * a = arange(60.).reshape(3,4,5) b = arange(24.).reshape(4,3,2) c = tensordot(a,b, axes=([1,0],[0,1])) c.shape (5,2)

c = zeros((5,2)) for i in range(5): ... for j in range(2): ... for k in range(3): ... for n in range(4): ... c[i,j] += a[k,n,i] * b[n,k,j] ...

See also: dot

tile()

from numpy import * a = array([10,20]) tile(a, (3,2)) array([[10, 20, 10, 20], [10, 20, 10, 20], [10, 20, 10, 20]]) tile(42.0, (3,2)) array([[ 42., 42.], [ 42., 42.], [ 42., 42.]]) tile([[1,2],[4,8]], (2,3)) array([[1, 2, 1, 2, 1, 2], [4, 8, 4, 8, 4, 8], [1, 2, 1, 2, 1, 2], [4, 8, 4, 8, 4, 8]])

See also: hstack, vstack, r_, c_, concatenate, repeat

tofile()

from numpy import * x = arange(10.) y = x**2 y.tofile("myfile.dat") y.tofile("myfile.txt", sep=' ', format = "%e") y.tofile("myfile.txt", sep='\n', format = "%e")

See also: fromfile, loadtxt, savetxt

tolist()

from numpy import * a = array([[1,2],[3,4]]) a.tolist() [[1, 2], [3, 4]]

trace()

from numpy import * a = arange(12).reshape(3,4) a array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) a.diagonal() array([ 0, 5, 10]) a.trace() 15 a.diagonal(offset=1) array([ 1, 6, 11]) a.trace(offset=1) 18

See also: diag, diagonal

transpose()

A very simple example:

a = array([[1,2,3],[4,5,6]]) print a.shape (2, 3) b = a.transpose() print b [[1 4] [2 5] [3 6]] print b.shape (3, 2)

From this, a more elaborate example can be understood:

a = arange(30) a = a.reshape(2,3,5) a array([[[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14]], [[15, 16, 17, 18, 19], [20, 21, 22, 23, 24], [25, 26, 27, 28, 29]]]) b = a.transpose() b array([[[ 0, 15], [ 5, 20], [10, 25]], [[ 1, 16], [ 6, 21], [11, 26]], [[ 2, 17], [ 7, 22], [12, 27]], [[ 3, 18], [ 8, 23], [13, 28]], [[ 4, 19], [ 9, 24], [14, 29]]]) b.shape (5, 3, 2) b = a.transpose(1,0,2) b array([[[ 0, 1, 2, 3, 4], [15, 16, 17, 18, 19]], [[ 5, 6, 7, 8, 9], [20, 21, 22, 23, 24]], [[10, 11, 12, 13, 14], [25, 26, 27, 28, 29]]]) b.shape (3, 2, 5) b = transpose(a, (1,0,2))

See also: T, swapaxes, rollaxis

tri()

from numpy import * tri(3,4,k=0,dtype=float) array([[ 1., 0., 0., 0.], [ 1., 1., 0., 0.], [ 1., 1., 1., 0.]]) tri(3,4,k=1,dtype=int) array([[1, 1, 0, 0], [1, 1, 1, 0], [1, 1, 1, 1]])

See also: tril, triu

tril()

from numpy import * a = arange(10,100,10).reshape(3,3) a array([[10, 20, 30], [40, 50, 60], [70, 80, 90]]) tril(a,k=0) array([[10, 0, 0], [40, 50, 0], [70, 80, 90]]) tril(a,k=1) array([[10, 20, 0], [40, 50, 60], [70, 80, 90]])

See also: tri, triu

trim_zeros()

from numpy import * x = array([0, 0, 0, 1, 2, 3, 0, 0]) trim_zeros(x,'f') array([1, 2, 3, 0, 0]) trim_zeros(x,'b') array([0, 0, 0, 1, 2, 3]) trim_zeros(x,'bf') array([1, 2, 3])

See also: compress

triu()

from numpy import * a = arange(10,100,10).reshape(3,3) a array([[10, 20, 30], [40, 50, 60], [70, 80, 90]]) triu(a,k=0) array([[10, 20, 30], [ 0, 50, 60], [ 0, 0, 90]]) triu(a,k=1) array([[ 0, 20, 30], [ 0, 0, 60], [ 0, 0, 0]])

See also: tri, tril

typeDict()

from numpy import * typeDict['short'] <type 'numpy.int16'> typeDict['uint16'] <type 'numpy.uint16'> typeDict['void'] <type 'numpy.void'> typeDict['S'] <type 'numpy.string_'>

See also: dtype, cast

uniform()

from numpy import * from numpy.random import * uniform(low=0,high=10,size=(2,3)) array([[ 6.66689951, 4.50623001, 4.69973967], [ 6.52977732, 3.24688284, 5.01917021]])

See also: standard_normal, poisson, seed

unique()

from numpy import * x = array([2,3,2,1,0,3,4,0]) unique(x) array([0, 1, 2, 3, 4])

See also: compress, unique1d

unique1d()

np.unique1d([1, 1, 2, 2, 3, 3]) array([1, 2, 3]) a = np.array([[1, 1], [2, 3]]) np.unique1d(a) array([1, 2, 3]) np.unique1d([1,2,6,4,2,3,2], return_index=True) (array([1, 2, 3, 4, 6]), array([0, 1, 5, 3, 2])) x = [1,2,6,4,2,3,2] u, i = np.unique1d(x, return_inverse=True) u array([1, 2, 3, 4, 6]) i array([0, 1, 4, 3, 1, 2, 1]) [u[p] for p in i] [1, 2, 6, 4, 2, 3, 2]

See also: compress, unique

vander()

from numpy import * x = array([1,2,3,5]) N=3 vander(x,N) array([[ 1, 1, 1], [ 4, 2, 1], [ 9, 3, 1], [25, 5, 1]]) column_stack([x**(N-1-i) for i in range(N)]) array([[ 1, 1, 1], [ 4, 2, 1], [ 9, 3, 1], [25, 5, 1]])

var()

from numpy import * a = array([1,2,7]) a.var() 6.8888888888888875 a = array([[1,2,7],[4,9,6]]) a.var() 7.8055555555555571 a.var(axis=0) array([ 2.25, 12.25, 0.25]) a.var(axis=1) array([ 6.88888889, 4.22222222])

See also: cov, std, mean

vdot()

from numpy import * x = array([1+2j,3+4j]) y = array([5+6j,7+8j]) vdot(x,y) (70-8j)

See also: dot, inner, cross, outer

vectorize()

from numpy import * def myfunc(x): ... if x >= 0: return x**2 ... else: return -x ... myfunc(2.) 4.0 myfunc(array([-2,2])) vecfunc = vectorize(myfunc, otypes=[float]) vecfunc(array([-2,2])) array([ 2., 4.])

See also: apply_along_axis, apply_over_axes

view()

from numpy import * a = array([1., 2.]) a.view() array([ 1., 2.]) a.view(complex) array([ 1.+2.j]) a.view(int) array([ 0, 1072693248, 0, 1073741824])

mydescr = dtype({'names': ['gender','age'], 'formats': ['S1', 'i2']}) a = array([('M',25),('F',30)], dtype = mydescr) b = a.view(recarray)

a['age'] array([25, 30], dtype=int16) b.age array([25, 30], dtype=int16)

See also: copy

vonmises()

from numpy import * from numpy.random import * vonmises(mu=1,kappa=1,size=(2,3)) array([[ 0.81960554, 1.37470839, -0.15700173], [ 1.2974554 , 2.94229797, 0.32462307]]) from pylab import * hist(vonmises(1,1,(10000)), 50)

See also: random_sample, uniform, standard_normal, seed

vsplit()

from numpy import * a = array([[1,2],[3,4],[5,6],[7,8]]) vsplit(a,2) [array([[1, 2], [3, 4]]), array([[5, 6], [7, 8]])] vsplit(a,[1,2]) [array([[1, 2]]), array([[3, 4]]), array([[5, 6], [7, 8]])]

See also: split, array_split, dsplit, hsplit, vstack

vstack()

from numpy import * a =array([1,2]) b = array([[3,4],[5,6]]) vstack((a,b,a)) array([[1, 2], [3, 4], [5, 6], [1, 2]])

See also: hstack, column_stack, concatenate, dstack, vsplit

weibull()

from numpy import * from numpy.random import * weibull(a=1,size=(2,3)) array([[ 0.08303065, 3.41486412, 0.67430149], [ 0.41383893, 0.93577601, 0.45431195]]) from pylab import * hist(weibull(5, (1000)), 50)

See also: random_sample, uniform, standard_normal, seed

where()

from numpy import * a = array([3,5,7,9]) b = array([10,20,30,40]) c = array([2,4,6,8]) where(a <= 6, b, c) array([10, 20, 6, 8]) where(a <= 6, b, -1) array([10, 20, -1, -1]) indices = where(a <= 6) indices (array([0, 1]),) b[indices] array([10, 20]) b[a <= 6] array([10, 20]) d = array([[3,5,7,9],[2,4,6,8]]) where(d <= 6) (array([0, 0, 1, 1, 1]), array([0, 1, 0, 1, 2]))

Be aware of the difference between x[list of bools] and x[list of integers]!

from numpy import * x = arange(5,0,-1) print x [5 4 3 2 1] criterion = (x <= 2) | (x >= 5) criterion array([True, False, False, True, True], dtype=bool) indices = where(criterion, 1, 0) print indices [1 0 0 1 1] x[indices] array([4, 5, 5, 4, 4]) x[criterion] array([5, 2, 1]) indices = where(criterion) print indices (array([0, 3, 4]),) x[indices] array([5, 2, 1])

See also: [], nonzero, clip

zeros()

from numpy import * zeros(5) array([ 0., 0., 0., 0., 0.]) zeros((2,3), int) array([[0, 0, 0], [0, 0, 0]])

See also: zeros_like, ones, empty, eye, identity

zeros_like()

from numpy import * a = array([[1,2,3],[4,5,6]]) zeros_like(a) array([[0, 0, 0], [0, 0, 0]])

See also: ones_like, zeros