numbyte 2009.12.24.py3k.cpp
numbyte - numerical bytearray - c++ numerical buffer interface extending bytearray into numpy-like, 2d array
numbyte - numerical bytearray - c++ numerical buffer interface extending bytearray into numpy-like, 2d array
REQUIRES PYTHON3.1
QUICK TEST: $ python3.1 setup.py build dev --quicktest
DESCRIPTION: numbyte - numerical bytearray - c++ numerical buffer interface extending bytearray into numpy-like, 2d array
SUMMARY: numbyte is a python3.1 extension module, efficiently implementing numerical 2d arrays. numbyte uses python bytearray as the underlying data structure, simplifying io operation with other python objects.
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 numbyte import * >>> ## subclass numbyte >>> class numbyte2(numbyte): pass
>>> ## create bytearray containing 3x4 array of longlong
>>> integers = numbyte2('i', range(12), shape0 = 3, shape1 = 4)
>>> print( integers.debug() )
<class 'numbyte.numbyte2'> 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 'numbyte.numbyte2'> 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 'numbyte.numbyte2'> 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 'numbyte.numbyte2'> 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 'numbyte.numbyte2'> 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 exception 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]]
| File | Type | Py Version | Uploaded on | Size | # downloads |
|---|---|---|---|---|---|
| numbyte-2009.12.24.py3k.cpp.tar.gz (md5) | Source | 2009-12-29 | 78KB | 515 | |
- Author: kai zhu
- Home Page: http://pypi.python.org/pypi/numbyte
- License: gpl
-
Categories
- Development Status :: 3 - Alpha
- Intended Audience :: Developers
- Intended Audience :: End Users/Desktop
- Intended Audience :: Science/Research
- License :: OSI Approved :: GNU General Public License (GPL)
- Natural Language :: English
- Operating System :: POSIX
- Operating System :: POSIX :: Linux
- Programming Language :: C
- Programming Language :: Python
- Programming Language :: Python :: 3
- Programming Language :: Python :: 3.1
- Topic :: Multimedia
- Topic :: Multimedia :: Graphics
- Topic :: Scientific/Engineering
- Topic :: Scientific/Engineering :: Mathematics
- Topic :: Scientific/Engineering :: Visualization
- Topic :: Software Development
- Topic :: Software Development :: Code Generators
- Topic :: Software Development :: Libraries
- Topic :: Software Development :: Libraries :: Python Modules
- Package Index Owner: davidbranniganz
- DOAP record: numbyte-2009.12.24.py3k.cpp.xml
