Skip to main content

numerical bytearray - extends bytearray into numpy-like, 2d array

Project description

numerical bytearray - extends bytearray into numpy-like, 2d array

REQUIRES PYTHON3.1

QUICK TEST: $ python3.1 setup.py build dev –quicktest

DESCRIPTION: numerical bytearray - extends bytearray into numpy-like, 2d array

RECENT CHANGELOG: 20091224 - modularized package - fix install issues - added sdist check 20091209 - improved documentation 20091205 - moved source code to c++ 20091116 - package integrated

DEMO USAGE:
>>> from numbytes import *
>>> ## subclass numbytes
>>> class numbytes2(numbytes): pass
>>> ## create bytearray containing 3x4 array of longlong
>>> integers = numbytes2('i', range(12), shape0 = 3, shape1 = 4)
>>> print( integers.debug() )
<class 'numbytes.numbytes2'> i refcnt=4 tcode=i tsize=8 offset=0 shape=<3 4> stride=<4 1> transposed=0
[[          0           1           2           3]
[          4           5           6           7]
[          8           9          10          11]]
>>> ## modify underlying bytearray
>>> integers.bytes()[0] = 0xff; integers.bytes()[1] = 0xff
>>> print( integers.bytes() )
bytearray(b'\xff\xff\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00')
>>> print( integers.debug() )
<class 'numbytes.numbytes2'> i refcnt=4 tcode=i tsize=8 offset=0 shape=<3 4> stride=<4 1> transposed=0
[[      65535           1           2           3]
[          4           5           6           7]
[          8           9          10          11]]
>>> ## bytearray as sequence
>>> print( 2 in integers )
True
>>> print( integers.count(2) )
1
>>> print( integers.index(2) )
2
>>> for aa in integers.rows(): print( aa )
[[      65535           1           2           3]]
[[          4           5           6           7]]
[[          8           9          10          11]]
>>> ## slice
>>> print( integers[1:, 2:].debug() )
<class 'numbytes.numbytes2'> i refcnt=3 tcode=i tsize=8 offset=6 shape=<2 2> stride=<4 1> transposed=0
[[          6           7]
[         10          11]]
>>> ## transpose
>>> print( integers.T()[2:, 1:].debug() )
<class 'numbytes.numbytes2'> i refcnt=3 tcode=i tsize=8 offset=6 shape=<2 2> stride=<1 4> transposed=1
[[          6          10]
[          7          11]]
>>> ## reshape
>>> print( integers.reshape(2, -1).debug() )
<class 'numbytes.numbytes2'> i refcnt=3 tcode=i tsize=8 offset=0 shape=<2 6> stride=<6 1> transposed=0
[[      65535           1           2           3           4           5]
[          6           7           8           9          10          11]]
>>> ## setslice
>>> integers.T()[2:, 1:] = range(4); print( integers )
[[      65535           1           2           3]
[          4           5           0           2]
[          8           9           1           3]]
>>> ## almost all arithmetic operations are inplace - use copy to avoid side-effects
>>> ## recast to double
>>> floats = integers.recast('f') / 3; print( floats )
[[        21845      0.333333      0.666667             1]
[      1.33333       1.66667             0      0.666667]
[      2.66667             3      0.333333             1]]
>>> ## copy
>>> print( floats.copy() + integers[0, :] )
[[        87380       1.33333       2.66667             4]
[      65536.3       2.66667             2       3.66667]
[      65537.7             4       2.33333             4]]
>>> ## inplace
>>> print( floats + integers[:, 0] )
[[        87380       65535.3       65535.7         65536]
[      5.33333       5.66667             4       4.66667]
[      10.6667            11       8.33333             9]]
>>> ## inplace
>>> print( floats - integers[:, 0] )
[[        21845      0.333333      0.666667             1]
[      1.33333       1.66667             0      0.666667]
[      2.66667             3      0.333333             1]]
>>> ## inplace
>>> print( floats ** 2 )
[[  4.77204e+08      0.111111      0.444444             1]
[      1.77778       2.77778             0      0.444444]
[      7.11111             9      0.111111             1]]
>>> ## inplace
>>> print( floats.sqrt() )
[[        21845      0.333333      0.666667             1]
[      1.33333       1.66667             0      0.666667]
[      2.66667             3      0.333333             1]]
>>> ## the only inplace exceptions are logical comparisons, which return new char arrays
>>> print( floats )
[[        21845      0.333333      0.666667             1]
[      1.33333       1.66667             0      0.666667]
[      2.66667             3      0.333333             1]]
>>> ## copy as char
>>> print( floats == floats[:, 1] )
[[ 00  01  00  00]
[ 00  01  00  00]
[ 00  01  00  00]]
>>> ## copy as char
>>> print( floats > 1.5 )
[[ 01  00  00  00]
[ 01  01  00  00]
[ 01  01  00  00]]

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
numbytes-2009.12.24.py3k.cpp.tar.gz (80.4 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page