Mapping values in NumPy arrays (any shape!) with high speed - Cython -
Project description
Mapping values in NumPy arrays (any shape!) with high speed - Cython -
pip install nparraymapper
Tested against Python 3.11 / Windows 10
Cython (and a C/C++ compiler) must be installed to use the optimized Cython implementation.
This module provides functions for mapping values in NumPy arrays based on a specified mapping dictionary. It works on any shape and with almost all dtypes (OBJECT NOT!!!)
It always returns a copy! The original data doesn't change!
import numpy as np
from nparraymapper import map_numpy_array, map_array_with_strings
np.random.seed(0)
a = np.random.randint(1, 9, (10000, 10000, 4))
ds = map_numpy_array(a, mapdict={4: 400000, 3: 1021, 2: -1}, keepnotmapped=True)
print(a)
print(ds)
print('----------------------------')
a = np.random.randint(2, 9, (100, 100, 3), dtype=np.uint32)
ds = map_numpy_array(a, mapdict={4: 4000.1232, 3: 1021.32}, keepnotmapped=True)
print(a)
print(ds)
print('----------------------------')
a = np.random.randint(2, 9, (1000, 100, 8)).astype(np.float32)
ds = map_numpy_array(a, mapdict={4: 40, 3: 1021}, keepnotmapped=False)
print(a)
print(ds)
print('----------------------------')
subsdi = {110: 'babça', 14: 'bsdfvd', 9: 'çbba'}
src = np.random.randint(1, 12, (1000, 1000, 3))
print(src)
out = map_array_with_strings(src, mapdict=subsdi)
print(out)
# [[[5 8 6 1]
# [4 4 4 8]
# [2 4 6 3]
# ...
# [6 4 4 4]
# [2 5 8 2]
# [3 7 5 5]]
# [[6 1 4 1]
# [1 2 5 8]
# [1 7 6 5]
# ...
# [6 7 7 1]
# [5 5 4 7]
# [5 8 7 6]]
# [[1 2 8 5]
# [2 2 8 6]
# [1 3 4 4]
# ...
# [3 4 3 2]
# [4 6 8 5]
# [4 7 6 4]]
# ...
# [[2 7 5 5]
# [2 2 8 8]
# [8 8 7 8]
# ...
# [8 7 5 8]
# [4 6 5 8]
# [3 8 5 8]]
# [[6 4 1 5]
# [1 7 7 1]
# [2 4 5 3]
# ...
# [1 5 5 4]
# [1 8 6 7]
# [4 5 8 4]]
# [[4 2 3 5]
# [5 7 8 2]
# [1 3 4 6]
# ...
# [3 8 1 5]
# [7 8 4 3]
# [6 8 3 4]]]
# [[[ 5 8 6 1]
# [400000 400000 400000 8]
# [ -1 400000 6 1021]
# ...
# [ 6 400000 400000 400000]
# [ -1 5 8 -1]
# [ 1021 7 5 5]]
# [[ 6 1 400000 1]
# [ 1 -1 5 8]
# [ 1 7 6 5]
# ...
# [ 6 7 7 1]
# [ 5 5 400000 7]
# [ 5 8 7 6]]
# [[ 1 -1 8 5]
# [ -1 -1 8 6]
# [ 1 1021 400000 400000]
# ...
# [ 1021 400000 1021 -1]
# [400000 6 8 5]
# [400000 7 6 400000]]
# ...
# [[ -1 7 5 5]
# [ -1 -1 8 8]
# [ 8 8 7 8]
# ...
# [ 8 7 5 8]
# [400000 6 5 8]
# [ 1021 8 5 8]]
# [[ 6 400000 1 5]
# [ 1 7 7 1]
# [ -1 400000 5 1021]
# ...
# [ 1 5 5 400000]
# [ 1 8 6 7]
# [400000 5 8 400000]]
# [[400000 -1 1021 5]
# [ 5 7 8 -1]
# [ 1 1021 400000 6]
# ...
# [ 1021 8 1 5]
# [ 7 8 400000 1021]
# [ 6 8 1021 400000]]]
# ----------------------------
# [[[2 8 2]
# [3 4 3]
# [2 7 7]
# ...
# [4 6 4]
# [3 7 5]
# [7 7 8]]
# [[4 4 4]
# [2 7 4]
# [2 7 2]
# ...
# [2 7 8]
# [4 6 8]
# [8 8 7]]
# [[6 5 3]
# [5 5 5]
# [8 6 3]
# ...
# [4 3 6]
# [4 6 7]
# [2 8 7]]
# ...
# [[3 3 4]
# [8 4 4]
# [5 5 2]
# ...
# [4 2 5]
# [7 3 7]
# [6 5 2]]
# [[3 3 2]
# [4 6 5]
# [8 8 4]
# ...
# [7 7 5]
# [6 6 2]
# [7 5 4]]
# [[5 8 2]
# [8 5 4]
# [6 7 6]
# ...
# [4 8 6]
# [2 8 3]
# [2 8 4]]]
# [[[2.0000000e+00 8.0000000e+00 2.0000000e+00]
# [1.0213200e+03 4.0001232e+03 1.0213200e+03]
# [2.0000000e+00 7.0000000e+00 7.0000000e+00]
# ...
# [4.0001232e+03 6.0000000e+00 4.0001232e+03]
# [1.0213200e+03 7.0000000e+00 5.0000000e+00]
# [7.0000000e+00 7.0000000e+00 8.0000000e+00]]
# [[4.0001232e+03 4.0001232e+03 4.0001232e+03]
# [2.0000000e+00 7.0000000e+00 4.0001232e+03]
# [2.0000000e+00 7.0000000e+00 2.0000000e+00]
# ...
# [2.0000000e+00 7.0000000e+00 8.0000000e+00]
# [4.0001232e+03 6.0000000e+00 8.0000000e+00]
# [8.0000000e+00 8.0000000e+00 7.0000000e+00]]
# [[6.0000000e+00 5.0000000e+00 1.0213200e+03]
# [5.0000000e+00 5.0000000e+00 5.0000000e+00]
# [8.0000000e+00 6.0000000e+00 1.0213200e+03]
# ...
# [4.0001232e+03 1.0213200e+03 6.0000000e+00]
# [4.0001232e+03 6.0000000e+00 7.0000000e+00]
# [2.0000000e+00 8.0000000e+00 7.0000000e+00]]
# ...
# [[1.0213200e+03 1.0213200e+03 4.0001232e+03]
# [8.0000000e+00 4.0001232e+03 4.0001232e+03]
# [5.0000000e+00 5.0000000e+00 2.0000000e+00]
# ...
# [4.0001232e+03 2.0000000e+00 5.0000000e+00]
# [7.0000000e+00 1.0213200e+03 7.0000000e+00]
# [6.0000000e+00 5.0000000e+00 2.0000000e+00]]
# [[1.0213200e+03 1.0213200e+03 2.0000000e+00]
# [4.0001232e+03 6.0000000e+00 5.0000000e+00]
# [8.0000000e+00 8.0000000e+00 4.0001232e+03]
# ...
# [7.0000000e+00 7.0000000e+00 5.0000000e+00]
# [6.0000000e+00 6.0000000e+00 2.0000000e+00]
# [7.0000000e+00 5.0000000e+00 4.0001232e+03]]
# [[5.0000000e+00 8.0000000e+00 2.0000000e+00]
# [8.0000000e+00 5.0000000e+00 4.0001232e+03]
# [6.0000000e+00 7.0000000e+00 6.0000000e+00]
# ...
# [4.0001232e+03 8.0000000e+00 6.0000000e+00]
# [2.0000000e+00 8.0000000e+00 1.0213200e+03]
# [2.0000000e+00 8.0000000e+00 4.0001232e+03]]]
# ----------------------------
# [[[2. 2. 4. ... 7. 5. 4.]
# [7. 3. 4. ... 4. 7. 3.]
# [5. 2. 3. ... 8. 6. 6.]
# ...
# [4. 2. 2. ... 5. 5. 4.]
# [4. 5. 8. ... 4. 2. 2.]
# [5. 2. 6. ... 6. 2. 8.]]
# [[7. 5. 7. ... 2. 4. 8.]
# [6. 4. 6. ... 8. 5. 4.]
# [4. 8. 7. ... 6. 6. 8.]
# ...
# [5. 7. 4. ... 5. 8. 7.]
# [3. 2. 8. ... 7. 6. 4.]
# [5. 6. 2. ... 3. 4. 4.]]
# [[2. 2. 3. ... 3. 2. 3.]
# [7. 2. 2. ... 6. 7. 8.]
# [8. 5. 7. ... 3. 6. 3.]
# ...
# [3. 8. 5. ... 6. 8. 5.]
# [6. 8. 2. ... 2. 3. 4.]
# [2. 7. 4. ... 2. 5. 2.]]
# ...
# [[4. 6. 3. ... 7. 6. 2.]
# [4. 4. 2. ... 5. 8. 4.]
# [6. 7. 8. ... 4. 2. 6.]
# ...
# [7. 3. 6. ... 2. 7. 4.]
# [2. 6. 7. ... 3. 5. 3.]
# [5. 4. 8. ... 3. 4. 5.]]
# [[8. 7. 8. ... 5. 8. 2.]
# [7. 3. 2. ... 5. 4. 8.]
# [4. 8. 8. ... 2. 2. 5.]
# ...
# [6. 3. 2. ... 4. 6. 7.]
# [7. 7. 6. ... 2. 7. 3.]
# [8. 4. 3. ... 3. 6. 8.]]
# [[6. 3. 4. ... 2. 7. 7.]
# [2. 3. 6. ... 3. 5. 6.]
# [7. 6. 2. ... 7. 6. 8.]
# ...
# [4. 3. 2. ... 3. 4. 3.]
# [6. 2. 5. ... 2. 5. 5.]
# [7. 8. 4. ... 7. 7. 8.]]]
# [[[ 0 0 40 ... 0 0 40]
# [ 0 1021 40 ... 40 0 1021]
# [ 0 0 1021 ... 0 0 0]
# ...
# [ 40 0 0 ... 0 0 40]
# [ 40 0 0 ... 40 0 0]
# [ 0 0 0 ... 0 0 0]]
# [[ 0 0 0 ... 0 40 0]
# [ 0 40 0 ... 0 0 40]
# [ 40 0 0 ... 0 0 0]
# ...
# [ 0 0 40 ... 0 0 0]
# [1021 0 0 ... 0 0 40]
# [ 0 0 0 ... 1021 40 40]]
# [[ 0 0 1021 ... 1021 0 1021]
# [ 0 0 0 ... 0 0 0]
# [ 0 0 0 ... 1021 0 1021]
# ...
# [1021 0 0 ... 0 0 0]
# [ 0 0 0 ... 0 1021 40]
# [ 0 0 40 ... 0 0 0]]
# ...
# [[ 40 0 1021 ... 0 0 0]
# [ 40 40 0 ... 0 0 40]
# [ 0 0 0 ... 40 0 0]
# ...
# [ 0 1021 0 ... 0 0 40]
# [ 0 0 0 ... 1021 0 1021]
# [ 0 40 0 ... 1021 40 0]]
# [[ 0 0 0 ... 0 0 0]
# [ 0 1021 0 ... 0 40 0]
# [ 40 0 0 ... 0 0 0]
# ...
# [ 0 1021 0 ... 40 0 0]
# [ 0 0 0 ... 0 0 1021]
# [ 0 40 1021 ... 1021 0 0]]
# [[ 0 1021 40 ... 0 0 0]
# [ 0 1021 0 ... 1021 0 0]
# [ 0 0 0 ... 0 0 0]
# ...
# [ 40 1021 0 ... 1021 40 1021]
# [ 0 0 0 ... 0 0 0]
# [ 0 0 40 ... 0 0 0]]]
# ----------------------------
# [[[ 3 4 11]
# [ 2 9 6]
# [ 5 5 5]
# ...
# [11 9 3]
# [ 9 3 10]
# [ 5 5 4]]
# [[ 5 6 8]
# [ 7 8 9]
# [ 9 8 9]
# ...
# [ 5 6 11]
# [ 7 5 9]
# [ 1 11 3]]
# [[ 3 3 10]
# [ 4 7 2]
# [ 5 1 9]
# ...
# [11 8 5]
# [ 6 11 11]
# [ 2 10 1]]
# ...
# [[ 1 4 6]
# [ 8 7 6]
# [10 3 2]
# ...
# [10 8 3]
# [ 7 7 11]
# [ 7 7 7]]
# [[ 3 8 6]
# [ 5 5 6]
# [ 7 7 7]
# ...
# [ 1 9 9]
# [ 9 3 9]
# [10 9 3]]
# [[ 2 9 11]
# [ 7 7 9]
# [10 11 3]
# ...
# [ 6 7 11]
# [11 3 4]
# [ 5 3 2]]]
# [[['' '' '']
# ['' 'çbba' '']
# ['' '' '']
# ...
# ['' 'çbba' '']
# ['çbba' '' '']
# ['' '' '']]
# [['' '' '']
# ['' '' 'çbba']
# ['çbba' '' 'çbba']
# ...
# ['' '' '']
# ['' '' 'çbba']
# ['' '' '']]
# [['' '' '']
# ['' '' '']
# ['' '' 'çbba']
# ...
# ['' '' '']
# ['' '' '']
# ['' '' '']]
# ...
# [['' '' '']
# ['' '' '']
# ['' '' '']
# ...
# ['' '' '']
# ['' '' '']
# ['' '' '']]
# [['' '' '']
# ['' '' '']
# ['' '' '']
# ...
# ['' 'çbba' 'çbba']
# ['çbba' '' 'çbba']
# ['' 'çbba' '']]
# [['' 'çbba' '']
# ['' '' 'çbba']
# ['' '' '']
# ...
# ['' '' '']
# ['' '' '']
# ['' '' '']]]
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nparraymapper-0.10.tar.gz.
File metadata
- Download URL: nparraymapper-0.10.tar.gz
- Upload date:
- Size: 25.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d5fe77e6d0ea25c58862ca3e21af84f001a6faaef529a6cf00ff26771f44456d
|
|
| MD5 |
59e3eceeab2aef29de13222c00b6a5fd
|
|
| BLAKE2b-256 |
1bb803bea0c55c22dc211520b2cabf8462639500fb15ada9722a65c0109d6c12
|
File details
Details for the file nparraymapper-0.10-py3-none-any.whl.
File metadata
- Download URL: nparraymapper-0.10-py3-none-any.whl
- Upload date:
- Size: 25.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ea0cf0d00195c5bc0d6220dcc6545194ad4c81e2da32edc7bb93017cbc049ebe
|
|
| MD5 |
0f2e0ad0f66c929246bfa5c5ac5c4c04
|
|
| BLAKE2b-256 |
c69ec033fdeafd78afe6e3061416dd21c615f8fc6482fc80a4e65052a7c1fc68
|