当Numpy数组中的所有值都超过阈值时,如何停止迭代?

时间:2017-05-25 18:38:48

标签: numpy

我坚持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()不适用于intger?!

2 个答案:

答案 0 :(得分:0)

while not (a < 100).all():
    a[a < 100] *= 2

答案 1 :(得分:0)

来自官方numpy.all文档:

  

测试沿给定轴的所有数组元素是否都计算为True。

也就是说,numpy.all会返回一个bool,因此在a.all() > cutoff中您确实在True > cutoffFalse > cutoff,其评估为1 > cutoff }和0 > 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