Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

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.

Source Distribution

numbytes-2009.12.24.py3k.cpp.tar.gz (80.4 kB view details)

Uploaded Source

File details

Details for the file numbytes-2009.12.24.py3k.cpp.tar.gz.

File metadata

File hashes

Hashes for numbytes-2009.12.24.py3k.cpp.tar.gz
Algorithm Hash digest
SHA256 d278059b86e7ca0d22643570b0852b79c06e7ac9baf9b644e0ff03fc351fff9e
MD5 2f68b2b498ee66644f0e3868f08932fe
BLAKE2b-256 fc811b70d3e9ed0f9d0b10120be4a817aa45a18944ce67acf90c7fd960edfac6

See more details on using hashes here.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page