import numpy as np
a = np.zeros([10, 5])
a[0] = [5, 6, 4, 8, 5]
a[1] = [3, 6, 8, 5, 3]
a[2] = [3, 2, 1, 5, 3]
a[3] = [6, 5, 6, 4, 6]
a[4] = [3, 4, 7, 6, 3]
a[5] = [2, 3, 1, 5, 2]
a[6] = [1, 1, 3, 2, 1]
a[7] = [6, 5, 8, 8, 6]
a[8] = [5, 4, 9, 7, 5]
a[9] = [1, 2, 7, 8, 1]
search = [2, 3, 1, 5]
for i, row in enumerate(a):
strided_row = np.lib.stride_tricks.as_strided(
row, (a.shape[1] - len(search) + 1, len(search)), (a.itemsize, a.itemsize)
)
if (strided_row == search).all(axis=1).any():
break
else:
i = None
print(i)
Предполагая, что search
является непрерывной частью некоторого ряда a
. Документация для as_strided () . Например, для первой строки: strided_row
равно [[5, 6, 4, 8], [6, 4, 8, 5]]
, тогда мы можем искать search
так же, как и в вопросе.