【问题标题】:How to stop iteration when all values in Numpy array rises above threshold which is integar?当 Numpy 数组中的所有值都高于整数阈值时,如何停止迭代?
【发布时间】:2017-05-26 22:13:05
【问题描述】:

我坚持使用 Numpy 练习说:

使用掩码将下列列表中低于 100 的所有值乘以 2:

a = np.array([230, 10, 284, 39, 76])

重复此操作,直到所有值都高于 100。

import numpy as np

a = np.array([230, 10, 284, 39, 76])

cutoff = 100

for i in range (10):
    a[a < cutoff] *= 2
    print (a)
    if a.all() > cutoff:
        break

我不知道当数组中的所有值都高于截止值时如何停止迭代?我认为 numpy.all() 不适用于整数?!

【问题讨论】:

  • all 应用于a&gt;cutoff 布尔数组。

标签: numpy


【解决方案1】:

来自官方numpy.all docs:

测试沿给定轴的所有数组元素是否评估为 True。

也就是说,numpy.all 返回单个bool,所以在a.all() &gt; cutoff 中,您实际上是在执行True &gt; cutoffFalse &gt; cutoff,它们的计算结果为1 &gt; cutoff0 &gt; cutoff,所以它总是False对于cutoff = 100

您应该更改if 条件以仅从a 中获取大于cutoff 的元素并在这些元素上执行all

import numpy as np

a = np.array([230, 10, 284, 39, 76])

cutoff = 100

for i in range (10):
    a[a < cutoff] *= 2

    print(a)

    if (a  > cutoff).all(): // HERE
        break

【讨论】:

    【解决方案2】:
    while not (a < 100).all():
        a[a < 100] *= 2
    

    【讨论】:

      猜你喜欢
      • 2017-09-01
      • 2021-02-26
      • 2019-05-09
      • 1970-01-01
      • 2020-01-23
      • 1970-01-01
      • 2011-12-21
      • 2022-08-23
      • 2016-01-21
      相关资源
      最近更新 更多