我试图扫描数组中的值并根据结果采取措施。但是,当我仔细查看代码的功能时,我发现我的逻辑条件不正确。
我将通过以下示例说明我的意思:
#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.')
因为我正在比较不同的对象(这是正确的吗?),所以不会实现其目的。
那么创建此测试的正确方法是什么?
感谢您的时间!
答案 0 :(得分:2)
对于您的2D数组,np.where
返回一个索引数组的元组(每个轴一个),因此a[index]
为您提供满足条件的元素数组。
实际上,您将一个空列表与一个空数组进行了比较。相反,我将比较此元组的第一个元素的size
属性(例如len()
):
if index[0].size == 0:
print('No values found.')