簡體   English   中英

將一維整數數組與二維數組中的行進行比較

[英]comparing a 1d array of integers to rows in 2d array

我有一段代碼正在運行,但目前是一個瓶頸,我想知道是否有更聰明的方法來做到這一點。

我有一個 0-20 之間的一維整數數組,長度為 20-1000(它會有所不同),我試圖將它與一組存儲在二維數組中的一維數組進行比較。 我希望在二維數組中找到與一維數組完全匹配的任何行。

我目前這樣做的方法如下:

res = np.mean(one_d_array == two_d_array,axis=1) == 1

這種方法的問題在於它會比較所有行中的所有元素,即使這些行在第一個元素、第二個元素等上不匹配......這當然是非常低效的。 我可以通過遍歷行並單獨比較每一行來解決這個問題,然后我可能能夠在一個元素為假時立即停止比較。 但是,我會被一個緩慢的 for 循環卡住,這也不是理想的。

所以我想知道是否有其他一些聰明的方法可以充分利用這兩種方法?

numpy 有一些有用的內置函數來檢查矩陣/向量是否相等,這大約快兩倍:

import numpy as np
import time
x = np.random.random((1, 1000))
y = np.random.random((10000, 1000))
y[53] = x

t = time.time()
x_in_y = np.equal(x, y).all(axis=1)  # equal(x, y) returns a row x col matrix of True for matches; all(axis=0) returns a vector len(rows) if the entire row in x == y is true
idx = np.where(x_in_y)  # returns the indicies where x_in_y is true (here 53)
print(time.time() - t)  # 0.019975900650024414

t = time.time()
res = np.mean(x == y, axis=1) == 1
print(time.time() - t)  # 0.03999614715576172

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM