Pre-release
This release is a pre-release and may not be stable for production use.
REQUIRES PYTHON3.1
QUICK TEST: $ python3.1 setup.py build dev –quicktest
DESCRIPTION: bytearray numerical extension
CHANGELOG:
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 of 3x4 matrix of int64
>>> bytes_integer = numbytes2("i", range(12), shape0=3, shape1=4)
>>> bytes_integer.debug()
<class 'numbytes.numbytes2'> i refcnt=4 tsize=8 shape=<3 4> strides=<4 1> transposed=0
>>> print( bytes_integer )
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
>>> ## underlying bytearray object >>> print( bytes_integer.bytes ) bytearray(b'\x00\x00\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') >>> ## slice / transpose / reshape >>> print( bytes_integer[0, :] ) [[ 0 1 2 3]]
>>> print( bytes_integer[1:, 2:] ) [[ 6 7] [ 10 11]]
>>> print( bytes_integer.T[2:, 1:] ) [[ 6 10] [ 7 11]]
>>> print( bytes_integer.reshape(2, -1) ) [[ 0 1 2 3 4 5] [ 6 7 8 9 10 11]]
>>> ## recast into double type
>>> bytes___float = bytes_integer.recast("f") / 3
>>> print( bytes___float )
[[ 0 0.333333 0.666667 1]
[ 1.33333 1.66667 2 2.33333]
[ 2.66667 3 3.33333 3.66667]]
>>> ## most arithmetic operations are inplace >>> ## use copy to avoid side-effects >>> print( bytes_integer.copy[1:, 2:] + bytes___float.copy[1:, 2:] ) [[ 8 9] [ 13 14]]
>>> print( bytes___float.copy[1:, 2:] + bytes_integer.copy[1:, 2:] ) [[ 8 9.33333] [ 13.3333 14.6667]]
>>> print( bytes_integer ) [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]]
>>> print( bytes_integer + bytes_integer[:, -1]) ## inplace [[ 3 4 5 6] [ 11 12 13 14] [ 19 20 21 22]]
>>> print( bytes_integer + bytes_integer.T[1:, 0]) ## inplace [[ 7 8 13 14] [ 24 25 26 27] [ 33 34 35 36]]
>>> print( bytes___float ) [[ 0 0.333333 0.666667 1] [ 1.33333 1.66667 2 2.33333] [ 2.66667 3 3.33333 3.66667]]
>>> print( bytes___float.sqrt() ) ## inplace [[ 0 0.57735 0.816497 1] [ 1.1547 1.29099 1.41421 1.52753] [ 1.63299 1.73205 1.82574 1.91485]]
>>> print( bytes___float ** 2 ) ## inplace [[ 0 0.333333 0.666667 1] [ 1.33333 1.66667 2 2.33333] [ 2.66667 3 3.33333 3.66667]]
>>> ## inplace exceptions are logical comparisons, >>> ## which return new char-typed arrays >>> print( bytes___float ) [[ 0 0.333333 0.666667 1] [ 1.33333 1.66667 2 2.33333] [ 2.66667 3 3.33333 3.66667]]
>>> print( bytes___float == bytes___float[:, 1] ) [[ 00 01 00 00] [ 00 01 00 00] [ 00 01 00 00]]
>>> print( bytes___float > 1.5 ) [[ 00 00 00 00] [ 01 01 01 01] [ 01 01 01 01]]
>>> ## >>> print( bytes_integer ) [[ 7 8 13 14] [ 24 25 26 27] [ 33 34 35 36]]
>>> for aa in bytes_integer.rows(): print( aa ) [[ 7 8 13 14]]
[[ 24 25 26 27]]
[[ 33 34 35 36]]
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file numbytes-2009.12.09.py3k.cpp.static.tar.gz.
File metadata
- Download URL: numbytes-2009.12.09.py3k.cpp.static.tar.gz
- Upload date:
- Size: 84.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b171d5b00a81d6cd16611bdc17b0168067b676dd33bbb6ea34ec826262b27747
|
|
| MD5 |
b5b4323c8b77167442bfbf50d82c33bb
|
|
| BLAKE2b-256 |
9630f860e30b3b89be1da99a54161bce6215dbc88f65143f178207da2ced4b96
|