numpy.array boolean to binary?

前端 未结 2 1214
Happy的楠姐
Happy的楠姐 2021-02-13 00:23

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

2条回答
  •  花落未央
    2021-02-13 00:36

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

提交回复
热议问题