【问题标题】: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

【问题讨论】:

  • This 应该会有所帮助。

标签: 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.]]
    

    【讨论】:

    • 很高兴为您提供帮助!祝 numpy 未来好运。如果您想了解更多信息,此讲座 youtube.com/watch?v=EEUXKG97YRw 是一种更流利地使用 numpy 的好方法。
    猜你喜欢
    • 1970-01-01
    • 2017-04-20
    • 1970-01-01
    • 2013-08-18
    • 1970-01-01
    • 2018-10-19
    • 2015-10-02
    • 2013-04-20
    • 2018-11-08
    相关资源
    最近更新 更多