我坚持使用 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 > cutoff
或False > cutoff
,其计算结果为1 > cutoff
和0 > 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