【问题标题】:What is the name of this topic?这个主题的名称是什么?
【发布时间】:2019-10-22 18:54:22
【问题描述】:

我在 Numpy 数组中看到了一些条件检查的编码, 就像数组是 a = np.zeros((10,10))

然后做类似的事情,

a[ a == 255 ] = 0

现在有了这个简单的东西,我看到人们正在做复杂的事情, 这个概念叫什么?

【问题讨论】:

标签: python python-3.x


【解决方案1】:

我认为它没有超出索引的名称。每种类型都可以定义这种索引的含义,因此列表作为整数索引容器的常见示例并不是您唯一可以做的事情。

numpy.array 首先重载它的__eq__ 运算符,这样a == 255 这样的表达式就不会返回单个布尔值。相反,如果a[i] == 255,结果的ith 元素为True,则它返回一个完整的布尔值array。即result = a == 255类似于

result = [a[i] == 255 for i in range(len(a))]

然后,__getitem__ 被重载以处理您尝试使用 另一个 数组索引数组的情况。在这种情况下,结果“选择”数组中对应的布尔值为真的每个元素。任务

a[a == 255] = 0

则大致等价于

for x in range(len(a)):
    if (a == 255)[x]:
        a[x] = 0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-14
    • 2014-10-03
    • 2018-06-04
    • 2011-06-03
    • 2012-03-05
    • 1970-01-01
    • 1970-01-01
    • 2016-08-31
    相关资源
    最近更新 更多