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]]
Metadata
Release files for numbytes 2009.12.24.py3k.cpp
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| numbytes-2009.12.24.py3k.cpp.tar.gz | 80.4 kB | Without provenance | Details |
Release files / numbytes-2009.12.24.py3k.cpp.tar.gz
| Download URL | numbytes-2009.12.24.py3k.cpp.tar.gz |
|---|---|
| Size | 80.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d278059b86e7ca0d22643570b0852b79c06e7ac9baf9b644e0ff03fc351fff9e
|
|
BLAKE2b-256 checksum How to use checksums |
fc811b70d3e9ed0f9d0b10120be4a817aa45a18944ce67acf90c7fd960edfac6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Security for numbytes 2009.12.24.py3k.cpp
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.