我坚持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?!
答案 0 :(得分:0)
while not (a < 100).all():
a[a < 100] *= 2
答案 1 :(得分:0)
来自官方numpy.all
文档:
测试沿给定轴的所有数组元素是否都计算为True。
也就是说,numpy.all
会返回一个bool
,因此在a.all() > cutoff
中您确实在True > cutoff
或False > 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