我有一个大的1D数组,主要包含NaN和一些整数。我试图提取数组包含特定序列的开始和结束索引,忽略中间的NaN。
举例来说:
sequence = np.array([1, 2, 3])
sparse_array1 = np.array([np.nan, 2, 3, np.nan, 1, 2, np.nan, 3, 2, np.nan, np.nan, 3, 1, np.nan, np.nan, np.nan, 2, np.nan, 3, 1, 1, np.nan])
sparse_array2 = np.array([3, 2, 1, 2, 1])
print(find_sequence_indices(sparse_array1, sequence))
# prints [(4, 7), (12, 18)]
print(find_sequence_indices(sparse_array2, sequence))
# prints []
字符串
我想不出一个不涉及3个嵌套循环的方法。我的数组比示例大得多,我无法承受立方运行时间。
1条答案
按热度按时间ffx8fchx1#
使用
sliding_window_view
、索引和numpy.where
:字符串
中间体(对于
sparse_array1
):型