矩阵的条件赋值

时间:2017-04-06 13:41:10

标签: matlab python-3.x

我有2个二进制1xM矩阵,比方说A和B:

A = [0 1 1 0 1 1 1]
B = [0 0 0 1 1 0 0]

我想找到矩阵C,使得B的值以A的值为条件。

即。 Matlab中的C = B(A)

Python中是否有使用此条件赋值生成C的函数?

1 个答案:

答案 0 :(得分:1)

<强>更新

你的第二个例子,在MATLAB中可以像这样处理:

a = [1 1 1 1 1] 
b = rand(1,5)
a(b<0.4) = 0

a =

     1     1     1     1     1


b =

    0.0975    0.2785    0.5469    0.9575    0.9649


a =

     0     0     1     1     1

在Python中也一样:

import numpy as np
A = np.array([1, 1, 1, 1, 1])
B = np.array([0.0975,    0.2785,    0.5469,    0.9575,    0.9649])
b = B <0.4
A[b] = 0
print A


[0 0 1 1 1]

正如您所提到的,如果两个数组都是二进制文件,那么您可能希望将A数组用作逻辑数组,以告诉您B的哪些成员选择(True或False)。从这个意义上说,在MATLAB中你会做这样的事情:

C = A(B==1)

C = A(logical(B))

然后结果将是A的元素,其中BTrue

 C = 
   [0 1]

在Python中,使用Masking可以完成同样的事情:

import numpy as np
A = np.array([0, 1, 1, 0, 1, 1, 1])
B = np.array([0, 0, 0, 1, 1, 0, 0])

b = B == 1
print A[b]

这也会导致:

[0 1]