I want to update ‘array’ inside the dictionary after doing interpolation.
for example, “array_ex” is a dictionary and has values like below and ‘0_array’ has (6,100) shape while ‘1_array’ has (6,200) shape…
{"0_array": array([[17., 20., 15., ..., 42., 52., 32.], [24., 33., 19., ..., 100., 120., 90.], ..., [2., 3., 4., ..., 1., 3., 4.], [10., 11., 12., ..., 13., 16., 17.]]), "1_array": array([[20., 20., 15., ..., 42., 43., 35.], [52., 33., 22., ..., 88., 86., 90.], ..., [10., 11., 17., ..., 71., 23., 24.], [34., 44., 28., ..., 42., 43., 17.]])}
I wrote a function for interpolating the array using np.interp. The function interpolates the shape of array (6,100) to (6,200). However, how can I update my array after interpolating? The name of function is “convert_array”.
for i,a in array_ex.items(): for row in a: convert_array(row,100,200) #interpolate 100 to 200
I want to get “array_ex” with updated array after interpolation. Thanks.
Advertisement
Answer
Start with a dict containing arrays:
In [168]: dict1 = {'one':np.arange(3), 'two':np.ones(3)}
Make a new dict from those arrays, same keys, new arrays:
In [169]: dict2 = {k:v*2 for k,v in dict1.items()} In [170]: dict1 Out[170]: {'one': array([0, 1, 2]), 'two': array([1., 1., 1.])} In [171]: dict2 Out[171]: {'one': array([0, 2, 4]), 'two': array([2., 2., 2.])}
Or with a loop more like yours:
In [172]: dict3 = {} ...: for k,v in dict1.items(): ...: dict3[k] = v.repeat(2) ...: In [173]: dict3 Out[173]: {'one': array([0, 0, 1, 1, 2, 2]), 'two': array([1., 1., 1., 1., 1., 1.])}