[英]Fastest method for determining if 2 (vertically or horizontally) adjacent elements of a numpy array have the same value
[英]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.