【问题标题】:conditional assignment for matrices矩阵的条件赋值
【发布时间】:2017-04-06 13:41:09
【问题描述】:

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

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

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

C = B(A) 在 Matlab 中。

Python 中有没有使用这个条件赋值生成 C 的函数?

【问题讨论】:

  • 什么是“有条件的”?您在这里的预期输出是什么?因为那个 Matlab 示例 C=B(A) 只是一个错误......
  • 这里我想求概率(B/A)。我计划生成矩阵 c,其中仅考虑 b 的那些部分,其中 a 值与某些逻辑值的对应值。a = 1 1 1 1 1 >> b= rand(1,5)>0.4 b = 1 0 1 1 0 >> c=b(a) c = 1 0 1 1 0

标签: matlab python-3.x


【解决方案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]

【讨论】:

    猜你喜欢
    • 2012-10-19
    • 2012-12-27
    • 1970-01-01
    • 2017-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-30
    相关资源
    最近更新 更多