Как сравнить 2-значные элементы в массиве с 2-значным списком для создания массива логического типа? - PullRequest
0 голосов
/ 12 мая 2018

например

a = np.array(([0, 0], [0, 1], [1, 0], [1, 1]))
c = np.array(a == [0, 1])

таким образом, я просто получаю

`array([[ True, False],
        [ True, True],
        [False, False],
        [False,  True]])`

но я хочу получить array([False, True, False, False]) конечно я могу ravel c и использовать if(c[i]==1)&(c[i+1]==1), чтобы дать "True",

c = c.ravel()
cshape = list(c.shape)
del cshape[-1]  
d = [] 
for i in range(0, len(c), 2):
    if (c[i]==1)&(c[i + 1]==1):
        d.append(True)
    else: 
        d.append(False)
d = np.array(d).reshape(cshape)

но для большой системы это может быть стоимость ресурсов. Есть ли простой способ сделать это?

1 Ответ

0 голосов
/ 12 мая 2018
In [1]: a = np.array(([0, 0], [0, 1], [1, 0], [1, 1]))
In [2]: a==np.array([0,1])
Out[2]: 
array([[ True, False],
       [ True,  True],
       [False, False],
       [False,  True]])

Просто проверьте, все ли элементы строки True:

In [3]: _.all(axis=1)
Out[3]: array([False,  True, False, False])
...