【发布时间】:2017-07-06 21:48:36
【问题描述】:
我有一个非常大的 numpy 数组,看起来像这样(前 5 个条目):
[[ 1. 0.01 0.02 0.6 0.01 0.5 0.01 0.5 0.5 0.5 ]
[ 0.5 0.01 0.01 0.6 0.01 0.5 0.5 0.5 0.5 0.6 ]
[ 0.6 0.01 0.5 0.5 0.5 0.5 0.7 0.01 0.01 0. ]
[ 0.01 0.5 0.8 0.02 0.02 0.81 0.01 0.77 0.02 0.01]
[ 0.5 0.02 0.5 0. 0.5 0.5 0.01 0.6 0.01 0. ]]
我在这个数组中搜索来寻找同样有 10 个值长的特定序列。 所以我在没有特殊规则之后存储传入的序列,只是 0 1 2 3 ... 并且我搜索这个数组。这是我的搜索方法(silo_arrays[][] 是上面的数组,array_pattern[] 是我搜索 silo_arrays 的一维 numpy 10 值长数组):
new_pattern=True
for z in range(0, self.silo_arrays_c):
eq_rate = 0
for y in range(0, self.length):
if(self.silo_arrays[z][y] != array_pattern[y]):
break
else:
eq_rate += 1
if(eq_rate == self.length):
new_pattern = False
break
如果 silo_arrays 大约有 1585 个条目长,这大约需要 0.006257 秒。有没有人知道如何通过某种排序或结构变化来加速这个搜索过程? 感谢您的支持:)
【问题讨论】:
-
np.where((silo_arrays==array_pattern).all(1))?
标签: python arrays numpy search data-structures