, не зная достаточного количества магии массива numpy, я бы просто выделил строки, каждый из них передал каждую пару в corrcoeff
[np.corrcoef(i,j)[0][1] for i,j in zip(a,b)]
для вывода столбца np.array
c, c.shape = np.array([np.corrcoef(i,j)[0][1] for i,j in zip(a,b)]), (a.shape[0], 1)
Я уверен, что лучше использовать функции широковещания / индексирования numpy
Как насчет использования значений высоты пикселей в качестве меток, а изображений (я полагаю, RGB, так что 3 канала) в качестве обучающего набора. Тогда вы можете просто запустить контролируемое обучение. Хотя я не уверен, как можно восстановить высоту, просто взглянув на изображение, даже людям будет трудно это сделать, даже увидев много изображений. Я думаю, что вам нужен какой-то ориентир.
Чтобы преобразовать изображение в трехмерный массив значений (третье измерение - это цветовые каналы):
from keras.preprocessing import image
# loads RGB image as PIL.Image.Image type
img = image.load_img(img_file_path, target_size=(120, 120))
# convert PIL.Image.Image type to 3D tensor with shape (120, 120, 3)
x = image.img_to_array(img)
Существует также ряд других способов: Преобразовать изображение в двумерный массив в python
С точки зрения назначения меток изображениям (здесь метки - это высота пикселей), это было бы так же просто, как создать свой обучающий набор x_train
(nb_images, 120, 120, 3) и метки y_train
(nb_images, 120, 120, 1) и запустив контролируемое обучение на них, пока для каждого изображения в x_train
модель не сможет предсказать каждое соответствующее значение в наборе высот y_train
с определенной ошибкой.