繁体   English   中英

在numpy数组中返回相邻值的最快方法

[英]Fastest way to return adjacent value in numpy array

我有两个保存日期和时间的 numpy 数组。 每天的时间不一定匹配,所以我需要运行检查以找到匹配的匹配项。

因此,我目前创建了一个简单的 UDF,它返回通过的日期时间。 但这需要很长时间,因为数组非常大。

以下是我当前的代码,我已将其分解为基本原则:

import numpy as np

#my arrays
arr1 = np.array([[20/12/2019, 16:00], [21/12/2019, 12:00], [22/12/2019, 15:00]])
arr2 = np.array([[20/12/2019, 16:00], [21/12/2019, 15:00], [22/12/2019, 16:00]])

#udf
def get_time(index_date):
    for i in range(arr2.shape[0]-1):
        if arr2[i,0] == index_date:
            return arr2[i,1]
            break

#loop through main data
for i in range(arr1.shape[0]-1):
    if arr1[i,1] = get_time(arr1[i,0]):
        print('match')
        break

上述工作,但相当缓慢和麻烦。 我知道还有类似下面的内容:

if value in my_array[:, col_num]:

但这不会返回相邻的时间,它只会检查日期是否存在。

我的问题:

一旦找到索引,循环遍历 numpy 数组以返回相邻值的最快方法是什么?

这是一种解决方法,仅您无法使用 Rafael 的解决方案时才有用。 我们替换临时数组中的日期以检查哪些坐标具有自定义值。

您可以使用

for row in np.array(np.where(np.core.defchararray.replace(p,old="21/12/2019",new="")==''))[0]:
    #Prints time where date == 21/12/2019
    print(p[row,1])

这将找到目标日期的行坐标,并且可以为您提供下一列,在您的情况下是时间。 检查多个值、迭代要检查的值并替换内部旧值很简单。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM