Source code for neurokit2.misc.replace
# -*- coding: utf-8 -*-
import numpy as np
[docs]
def replace(data, replacement_dict):
"""**Replace values using a dictionary**
Parameters
----------
data : array
The data to replace values.
replacement_dict : dict
A replacement dictionary of the form ``{old_value: new_value}``.
Returns
-------
array
Array containing the replaced values.
Examples
--------
import neurokit2 as nk
data = [0, 1, 2, 3]
replacement = {0: 99, 3: 42}
replaced = nk.replace(data, replacement)
replaced
"""
# Extract out keys and values
k = np.array(list(replacement_dict.keys()))
v = np.array(list(replacement_dict.values()))
# Get argsort indices
sidx = k.argsort()
ks = k[sidx]
vs = v[sidx]
idx = np.searchsorted(ks, data)
idx[idx == len(vs)] = 0
mask = ks[idx] == data
return np.where(mask, vs[idx], data)