打印具有False值的数组元素

时间:2017-07-26 07:33:36

标签: python

在python中,如何打印具有False值的元素? 这是我的代码:

import numpy as np

height = [1.65, 1.75, 1.71, 1.72, 1.69, 1.68, 1.67, 1.70]
weight = [60, 65, 88, 59, 78, 77, 79, 72]

# Calculate and print all the BMIs
bmi = np.array(weight) / np.array(height)
print("The values of all BMIs:", bmi)

# Create an array with BMI status (True/False) less than 40
true_false_bmi = np.array(bmi) < 40

# Print out the whole true_false_bmi array as True/False
print("Status of all BMIs (Criteria -> Less than 40):", true_false_bmi)

# Print out BMIs less than 40
print("BMIs LESS than 40:", bmi[true_false_bmi])

到目前为止它工作正常。 现在我想打印40以上的BMI。我尝试使用以下代码,但它无法正常工作:

# Print out BMIs of all baseball players whose BMI is above 40 i.e., False elements of the true_false_bmi array.
print("BMIs ABOVE 40:", bmi[!true_false_bmi])
print("BMIs ABOVE 40:", bmi[not true_false_bmi])

4 个答案:

答案 0 :(得分:2)

您可以在~中使用numpy运算符进行否定。

print("BMIs ABOVE 40:", bmi[~true_false_bmi])

答案 1 :(得分:1)

一种方法是使用where

print(bmi[np.where(bmi < 40)])

答案 2 :(得分:1)

在这种情况下,您可以使用列表推导。非常简单的解决方案,我想......

false_bmi = [not value for value in true_false_bmi]
print(bmi[false_bmi])

答案 3 :(得分:0)

尝试使用过滤器:

print(filter(lambda x: x>40, bmi))

编辑:

或者如果它是一个numpy数组,你可以

print(bmi[bmi>40])