我试图在python27中重写一个matlab代码.有一个matlab行如下:
vector_C = vector_A > vector_B;
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用numpy在python中编写它,它将是相同的,但结果将是一个布尔数组而不是二进制文件.我希望结果是二进制文件.有没有办法让它返回二进制或我应该每次手动转换?转换它有快速的方法吗?我是python的新手.谢谢.
Ste*_*joa 16
即使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])
Run Code Online (Sandbox Code Playgroud)
因此,简而言之,您可能不需要做任何额外的事情.
但如果你必须进行转换,你可以使用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.])
Run Code Online (Sandbox Code Playgroud)
您可以强制numpy将元素存储为整数.它将0视为假,将1视为真.
import numpy
vector_C = numpy.array( vector_A > vector_B, dtype=int) ;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24087 次 |
| 最近记录: |