【发布时间】:2020-06-15 22:31:58
【问题描述】:
numpy 的新手。我有一个由 1 和 0 组成的二维数组,我试图对角扫描一定长度的连续数组。一旦找到模式,该函数应该返回模式开始的索引,即第一个“1”在拉伸中的位置。 这是我最好的尝试:
def find_pattern(array2D, patternlength):
ones_count = 0
pattern_location = []
diag = [array2D.diagonal(i) for i in range(array2D.shape[1]-1,-array2D.shape[0],-1)]
for index, match in np.ndenumerate(diag):
if match == 1:
ones_count +=1
else:
ones_count == 0
if ones_count == patternlength:
pattern_location.append(index)
return pattern_location
但是,当尝试运行时会产生 ValueError:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
我理解为什么会出现错误,但我不知道如何解决它。 any() 或 all() 似乎不适合我正在寻找一段连续的情况。
我正在寻找一种不涉及使用额外包(如 pandas 和 itertools)的解决方案。
谢谢!
【问题讨论】:
标签: python numpy python-3.7