numpy.array boolean to binary?

匿名 (未验证) 提交于 2019-12-03 08:35:02

问题:

I am trying to rewrite a matlab code in python27. There is a matlab line as follows:

vector_C = vector_A > vector_B; 

If I try to write this in python using numpy it will be the same, but the result will be an array of booleans instead of binaries. I want the result to be in binaries. Is there a way to make it return binary or should I convert manually each time? Is there a quick way of converting it? I am new to python. Thanks.

回答1:

Even though vector_C may have dtype=bool, you can still do operations such as the following:

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]) 

So, in short, you probably don't have to do anything extra.

But if you must do a conversion, you may use 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:

You can force numpy to store the elements as integers. It treats 0 as false and 1 as true.

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


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!