我有一個有多個列的排序CSV文件,我想返回列1中的項目的值或索引。此csv文件具有大約300.000到400.000的值,我試圖避免任何min
函數,因爲它可能會花費很長時間,我需要在一秒鐘內的價值。查找項目低於或等於列表中的值
所以我在做什麼,通過加起來COLUMN1的條目到列表:
with open('example.csv', 'r') as f:
reader = csv.reader(f, delimiter=';')
for row in reader:
array.append(int(row[0]))
而現在到了棘手的部分,因爲我無法找到一個合適的功能和/或例子是誰尋找更低或相等的價值。 我試圖編輯這個例子中我發現stackoverflow.com
def find_closest(t):
idx = bisect.bisect_left(array, t) # Find insertion point
# Check which timestamp with idx or idx - 1 is closer
if idx > 0 and abs(array[idx] - value) > abs(array[idx - 1] - value):
idx -= 1
return array[idx]
該實施例是給出來的最接近的值,下,等於或更大。但我無法按照自己的想法改變它。
至於什麼我正在尋找數的例子是:
array=[123,123,123,124,125,125,125,128,128,128,128]
value1=124
value2=127
所以尋找值1時,它應該返回return1=124
或索引。 當值不包含在value2中時,它應返回低於搜索值的最高值。 return2=125
即使較高的值128更接近。
我試過使用平分模塊,但是我失敗了。任何tipps感激。
問候
如果第1列進行排序,然後二進制搜索(平分)是你的朋友,等等。「我悲慘地失敗了」,或許擴大。 – Tommy