如何在逻辑上测试np.where结果的输出?

时间:2018-07-26 10:46:47

标签: python-3.x numpy

我试图扫描数组中的值并根据结果采取措施。但是,当我仔细查看代码的功能时,我发现我的逻辑条件不正确。

我将通过以下示例说明我的意思:

#importing numpy
import numpy as np

#creating a test array
a = np.zeros((3,3))

#searching items bigger than 1 in 'a'
index = np.where(a > 1)

我期望索引返回一个空列表。实际上,它返回一个元组对象,例如:

index
Out[5]: (array([], dtype=int64), array([], dtype=int64))

所以,我要进行的测试:

#testing if there are values
#in 'a' that fulfil the where condition 
if index[0] != []:
    print('Values found.')

#testing if there are no values
#in 'a' that fulfil the where condition
if index[0] == []:
    print('No values found.')

因为我正在比较不同的对象(这是正确的吗?),所以不会实现其目的。

那么创建此测试的正确方法是什么?

感谢您的时间!

1 个答案:

答案 0 :(得分:2)

对于您的2D数组,np.where返回一个索引数组的元组(每个轴一个),因此a[index]为您提供满足条件的元素数组。

实际上,您将一个空列表与一个空数组进行了比较。相反,我将比较此元组的第一个元素的size属性(例如len()):

if index[0].size == 0:
    print('No values found.')