Оптимизированный способ разделитьв два столбца в Python - PullRequest
0 голосов
/ 18 октября 2018

Давайте рассмотрим следующее numpy ndarray ,

[[0],
 [0],
 [0],
 [0],
 [0],
 [1],
 [0]]

Я хочу сделать это в два столбца, как,

    A     B
0   1     0
1   1     0
2   1     0
3   1     0
4   1     0
5   0     1
6   1     0

Теперь я делаюследующим образом,

a = []
b = []
for i in lb_results:
    if i == 0:
        a.append(1)
        b.append(0)
    else:
        a.append(0)
        b.append(1)

lb_results = np.column_stack((a, b))
print(lb_results)

но я ожидаю что-то более оптимизированный , (меньшее количество строк кода лучше, без использования большего количества циклов) Любые предложения будут благодарныСпасибо.

1 Ответ

0 голосов
/ 18 октября 2018

Вы можете использовать xor следующим образом:

>>> c = (np.c_[:7] == 5).astype(int)
>>> c
array([[0],
       [0],
       [0],
       [0],
       [0],
       [1],
       [0]])
>>> c ^ (1, 0)
array([[1, 0],
       [1, 0],
       [1, 0],
       [1, 0],
       [1, 0],
       [0, 1],
       [1, 0]])

Я полагаю, это примерно так же быстро, как и получается; -)

Волшебство за этим - numpy вещание.Вкратце, оператор xor ^ применяется к каждой паре между элементом столбца c и элементом последовательности 1D (1, 0), ведущей к полной «таблице xor» между ними.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...