我想重寫python27中的matlab代碼。有一個MATLAB線如下:numpy.array布爾二進制?
vector_C = vector_A > vector_B;
如果我嘗試使用numpy的將是同樣在Python寫這個,但結果將是布爾值,而不是二進制數組。我想要的結果是在二進制文件。有沒有辦法讓它返回二進制或每次都應該手動轉換?有沒有快速轉換它的方法?我是python的新手。謝謝。
我想重寫python27中的matlab代碼。有一個MATLAB線如下:numpy.array布爾二進制?
vector_C = vector_A > vector_B;
如果我嘗試使用numpy的將是同樣在Python寫這個,但結果將是布爾值,而不是二進制數組。我想要的結果是在二進制文件。有沒有辦法讓它返回二進制或每次都應該手動轉換?有沒有快速轉換它的方法?我是python的新手。謝謝。
即使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.])
您可以強制numpy將元素存儲爲整數。它將0視爲假,1視爲真。
import numpy
vector_C = numpy.array(vector_A > vector_B, dtype=int) ;
我相信matlab的二進制和Python布爾是等價的。你有沒有在二進制向量的matlab代碼中做什麼,你不能用numpy布爾向量做什麼? –
我沒有嘗試用布爾向量做任何事情。但是,我只是將布爾向量除以「1」,所以它現在是二進制的。我想我也可以使用它而不做任何修改。謝謝 –
如果這對您有用,請回答您自己的問題以關閉它。 – dtlussier