Python Numpy矩阵运算 - 矩阵[a == b]?

时间:2017-04-28 19:14:04

标签: python opencv numpy matrix

我一直在尝试创建一个分水岭算法,并且所有示例似乎都在Python中,但我遇到了一些问题。我一直试图在numpy文档中找到这一行的含义:

matrixVariable[A==255] = 0

但没有运气。任何人都能解释一下这项操作的作用

对于上下文中的行:label [lbl == -1] = 0

2 个答案:

答案 0 :(得分:3)

表达式A == 255创建一个布尔数组True,其中A = {255},False

表达式matrixVariable[A==255] = 0将与A == 255中的True值对应的每个索引设置为0。

EG:

import numpy as np
A = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
B = np.zeros([3, 3])
print('before:')
print(B)
B[A>5] = 5
print('after:')
print(B)

OUT:

[[ 0.  0.  0.]
 [ 0.  0.  0.]
 [ 0.  0.  0.]]
after:
[[ 0.  0.  0.]
 [ 0.  0.  5.]
 [ 5.  5.  5.]]

答案 1 :(得分:0)

我假设matrixVariable和A是numpy数组。如果假设是正确的那么" matrixVariable [A == 255] = 0"表达式首先获取数组A的索引,其中A的值等于255然后获取这些索引的matrixVariable值并将它们设置为" 0"

示例:

import numpy as np

matrixVariable = np.array([(1, 3),
                           (2, 2),
                           (3,1)])

A = np.array([255, 1,255])

所以A [0]和A [2]等于255

matrixVariable[A==255]=0 #then sets matrixVariable[0] and matrixVariable[2] to zero

print(matrixVariable) # this would print 

[[0 0] 
 [2 2] 
 [0 0]]