簡體   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