18

python27でmatlabコードを書き直そうとしています。次のようなMATLABラインがあります。

vector_C = vector_A > vector_B;

numpyを使用してPythonでこれを書き込もうとすると、同じになりますが、結果はバイナリではなくブール値の配列になります。結果をバイナリにしたいと思います。バイナリを返すようにする方法はありますか、それとも毎回手動で変換する必要がありますか?それを変換する簡単な方法はありますか?私はPythonを初めて使用します。ありがとう。

4

2 に答える 2

19

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.])
于 2012-05-10T02:12:18.073 に答える
8

numpyに要素を整数として格納するように強制できます。0をfalseとして扱い、1をtrueとして扱います。

import numpy

vector_C = numpy.array( vector_A > vector_B, dtype=int) ;
于 2012-05-10T02:11:22.963 に答える