numpy.ndarray valuse无法与if语句进行比较

时间:2019-03-03 05:07:40

标签: python numpy tensorflow numpy-ndarray object-detection-api

I,m目前正在从事tensorflow图像处理项目。标识了三种类型的对象,分别用“ s_class”表示的标号1(car),2(bus)和3(van)。检测到的输出对象/ objetcs由s_class给出,它是一个numpy.ndarray。当我打印检测到的对象编号时,

(boxes, scores, classes, num) = sess.run(
    [detection_boxes, detection_scores, detection_classes, num_detections],
    feed_dict={image_tensor: frame_expanded})
s_class = classes[scores > 0.6]
print(s_class)

它给出类似的输出,

>>[2.]    #bus is detected
  [3. 2. 1.]    #all three objects(van,bus,car) are detected
  [1. 2. 3.]    
  [1. 2. 3.]
  [1. 2. 3.]
  [2. 1. 3.]
  [2. 1. 3.]
  [2. 1. 3.]
  [2. 1. 3.]
  [2. 3. 1.]
  [2. 3. 1.]
  []              #nothing is detected
  [2.]            #only second object is detected
  []
  [1.]            #only first object is detected

并继续... 对象未按有组织的顺序在数组中表示(例如:-[1. 2. 3.]或[2. 1. 3。] ...等-它更改位置) 如果检测到对象1,则需要打印“ ok”,而当检测到对象2和/或3时,则需要打印“ notok”。同样,检测到对象1和对象2和/或3时,它应打印“ notok”。 我尝试过,

if (s_class==1):
    print("ok")
elif (s_class==2 or s_class==3):
    print("notok")
elif (s_class==1 and (s_class==2 or s_class==3)):
    print("notok")
elif (s_class==1 and s_class==2 and s_class==3 ):
    print("notok")

这不起作用。我该如何将numpy.ndarray与以上条件进行比较?

1 个答案:

答案 0 :(得分:0)

您可以使用in进行比较。

x = np.array([[1, 2, 3], [4, 5, 6]], np.int32)
x0 = x[0] #array([1, 2, 3])

#True
1 in x0 and 2 in x0

#True
1 in x0 or 2 in x0

#False
1 in x0 and 4 in x0