Подтвердить что ты не робот

Numpy.array boolean to binary?

Я пытаюсь переписать код matlab в python27. Существует строка Matlab следующим образом:

vector_C = vector_A > vector_B;

Если я попытаюсь записать это в python с помощью numpy, он будет таким же, но результатом будет массив булевых, а не двоичных файлов. Я хочу, чтобы результат был в двоичных файлах. Есть ли способ заставить его возвращать двоичный файл или мне нужно каждый раз преобразовывать вручную? Есть ли быстрый способ его преобразования? Я новичок в python. Спасибо.

4b9b3361

Ответ 1

Даже если vector_C может иметь dtype=bool, вы все равно можете выполнять такие операции, как:

In [1]: vector_A = scipy.randn(4)

In [2]: vector_B = scipy.zeros(4)

In [3]: vector_A
Out[3]: array([ 0.12515902, -0.53244222, -0.67717936, -0.74164708])

In [4]: vector_B
Out[4]: array([ 0.,  0.,  0.,  0.])

In [5]: vector_C = vector_A > vector_B

In [6]: vector_C
Out[6]: array([ True, False, False, False], dtype=bool)

In [7]: vector_C.sum()
Out[7]: 1

In [8]: vector_C.mean()
Out[8]: 0.25

In [9]: 3 - vector_C
Out[9]: array([2, 3, 3, 3])

Итак, словом, вам, вероятно, не нужно ничего делать.

Но если вы должны сделать преобразование, вы можете использовать astype:

In [10]: vector_C.astype(int)
Out[10]: array([1, 0, 0, 0])

In [11]: vector_C.astype(float)
Out[11]: array([ 1.,  0.,  0.,  0.])

Ответ 2

Вы можете заставить numpy хранить элементы как целые числа. Он обрабатывает 0 как false, а 1 - как истинный.

import numpy

vector_C = numpy.array( vector_A > vector_B, dtype=int) ;