Passed
Push — master ( 4ef66c...afb360 )
by Simon
03:52
created

gradient_free_optimizers.conv.position2value()   A

Complexity

Conditions 2

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 5
nop 2
dl 0
loc 7
rs 10
c 0
b 0
f 0
1
# Author: Simon Blanke
2
# Email: [email protected]
3
# License: MIT License
4
5
import numpy as np
6
7
8
def position2value(search_space, position):
9
    value = []
10
11
    for n, space_dim in enumerate(search_space):
12
        value.append(space_dim[position[n]])
13
14
    return value
15
16
17
def values2positions(search_space, values):
18
    init_pos_conv_list = []
19
    values_np = np.array(values)
20
21
    for n, space_dim in enumerate(search_space):
22
        pos_1d = values_np[:, n]
23
        init_pos_conv = np.where(space_dim == pos_1d)[0]
24
        init_pos_conv_list.append(init_pos_conv)
25
26
    return init_pos_conv_list
27
28
29
def positions2values(search_space, positions):
30
    pos_converted = []
31
    positions_np = np.array(positions)
32
33
    for n, space_dim in enumerate(search_space):
34
        pos_1d = positions_np[:, n]
35
        pos_conv = np.take(space_dim, pos_1d, axis=0)
36
        pos_converted.append(pos_conv)
37
38
    return list(np.array(pos_converted).T)
39