gpt4 book ai didi

python - 有没有办法通过将 python 列表快速转换为 numpy 矩阵来搜索列表?

转载 作者:太空宇宙 更新时间:2023-11-03 20:54:34 26 4
gpt4 key购买 nike

我试图通过循环遍历数组的行并检查内部值是否匹配条件来搜索 python 2D 数组。一个例子在这里:

def searchList(list, v0, v1, v2, v3):
for r in range(len(list)):
if (list[r][0] == v0) & (list[r][1] == v1) & (list[r][2] == v2) & (list[r][3] == v3):
return r

return None

然而,与其他语言相比,Python 的速度相当慢。

现在的主要问题是这个列表是动态增长的,并且可能有 1000 行或更多行。

当我上网搜索如何加快速度时,我发现将列表移动到 numpy 矩阵并使用 np.where() 可以做到这一点。

def searchList(list, v0, v1, v2, v3):
tmpQ = np.array(list)
locList = np.where((tmpQ[:,0] == v0) & (tmpQ[:,1] == v1) & (tmpQ[:,2] == v2) & (tmpQ[:,3] == v3))
if locList[0].size == 0:
return None
else:
return locList[0][0]

现在的问题是,将 python 2D 数组转换为 numpy 矩阵,这个操作也需要很多时间。

我的另一个选择是摆脱 python 2D 数组,只使用 numpy 矩阵,但这也不起作用,因为矩阵不断增长,连接操作需要很长时间。

有什么办法可以快速做到这一点吗?

我知道是什么导致使用 cProfile 并运行代码花费最多时间。

最佳答案

这取决于您的数据形状,您可以尝试以下操作:

def searchList(mylist, v0, v1, v2, v3):
try:
row_num = mylist.index([v0, v1, v2, v3])
except ValueError:
return None
return row_num


m = [[1,2,3,4], [5,6,7,8], [3,2,8,7], [1,3,6,9]]
print(searchList(m, 3, 2, 8, 7))

输出:

2

关于python - 有没有办法通过将 python 列表快速转换为 numpy 矩阵来搜索列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56104036/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com