У меня есть CSV-файл с 12 столбцами и 20000 строками и 12 изображениями формы 100 * 100, т. Е. 10000 пикселей. Мне нужно провести каждый пиксель через 20000 точек данных в файле CSV, чтобы найти максимальную корреляцию. Вот моя функция:
def Corrlate(pixels):
max_value = -1
max_roc = 0
max_val = 0
if(len(pixels[pixels != 0]) == 0):
max_soc = 0
else:
for index, row in data.iterrows():
val = [row['B2'], row['B3'], row['B4'],
row['B5'], row['B6'], row['B7'],
row['B8'], row['B11'], row['B12']]
corr = np.corrcoef(pixels, val)
if (corr > max_value).any():
max_value = corr
max_soc = row['SOC']
max_val = val
return max_soc
pixel = [0.1459019176,0.209071098,0.2940336262,0.3246242805,0.349758679,0.375791541,0.3990873849,0.5312103156,0.4791704195]
data = pd.read_csv("test.csv")
Corrlate(pixel)
test.csv
Or.,B2,B3,B4,B5,B6,B7,B8,B11,B12,SOC
0,0.09985147853,0.1279325334,0.1735545485,0.1963891543,0.2143978866,0.2315615778,0.2477941219,0.3175400435,0.3072681177,91.1
1,0.1353946488,0.1938304482,0.2661696295,0.2920155645,0.3128841044,0.3351216611,0.3539684059,0.4850393799,0.4505173283,21.4
2,0.1307552092,0.2112897844,0.3084664959,0.3367929562,0.3613391345,0.3852476516,0.4031711988,0.5193408686,0.4661771688,15.6
.
.
.
.
.
20000,0.1307552092,0.2112897844,0.3084664959,0.3367929562,0.3613391345,0.3852476516,0.4031711988,0.5193408686,0.4661771688,15855.6
Приведенную выше функцию необходимо запустить 10000 раз для изображения формы 100 * 100. В моей машине это заняло 2,5 часа, чтобы завершить процесс. Есть ли какое-либо эффективное решение для запуска этого процесса с меньшими затратами времени.