当 Numpy 数组中的所有值都上升到阈值以上时,如何停止迭代

  • 本文关键字:阈值 迭代 何停止 数组 Numpy 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?!

来自官方numpy.all文档:

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

也就是说,numpy.all返回一个bool,所以在a.all() > cutoff你实际上是在做True > cutoffFalse > cutoff,其计算结果为1 > cutoff0 > cutoff,所以对于cutoff = 100总是False

您应该更改if条件,以便仅从大于cutoff的元素中获取a,并对这些元素执行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
while not (a < 100).all():
    a[a < 100] *= 2

最新更新