【问题标题】:Python Numpy Matrix Operations - matrix[a==b]?Python Numpy 矩阵运算 - 矩阵 [a==b]?
【发布时间】:2017-09-26 23:54:31
【问题描述】:
我一直在尝试创建一个分水岭算法,但由于所有示例似乎都是用 Python 编写的,所以我遇到了一些困难。我一直试图在 numpy 文档中找到这条线的含义:
matrixVariable[A==255] = 0
但没有运气。谁能解释一下那个操作是做什么的?
对于上下文中的行:label [lbl == -1] = 0
【问题讨论】:
标签:
python
opencv
numpy
matrix
【解决方案1】:
我假设 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]]
【解决方案2】:
表达式A == 255 创建一个布尔数组,它是True,其中x == 255 在A 中,否则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)
输出:
[[ 0. 0. 0.]
[ 0. 0. 0.]
[ 0. 0. 0.]]
after:
[[ 0. 0. 0.]
[ 0. 0. 5.]
[ 5. 5. 5.]]