Python Pandas сводная таблица данных изображений


У меня есть фрейм данных using Pandas, я создал таблицу размером 3000000x3 (пиксели x полосы rob) и теперь пытаюсь ее свернуть, чтобы у меня была таблица размером 3x3000000, а затем запустить PCA против новых данных.

Я использую эту функцию поворота панды, но не могу понять, что я делаю неправильно.
import pandas as pd 
import numpy as np 
import random as rd
from sklearn.decomposition import PCA
from sklearn import preprocessing
import matplotlib.pyplot as plt
import cv2 

#read in image
img = cv2.imread('/Volumes/EXTERNAL/Stitched-Photos-for-Chris/p7_0015_20161005-949am-75m-pass-1.jpg.png',1)
row,col = img.shape[:2]
#print(row , col)

#get a unique pixel ID for each pixel
pixel = [i for i in range(0,row*col)]
data = pd.DataFrame(columns=['bBand','gBand','rBand'],index = pixel)

#populate data for each band
b,g,r = cv2.split(img)
data.loc[pixel,'bBand'] = b.flat[:]
data.loc[pixel,'gBand'] = g.flat[:]
data.loc[pixel,'rBand'] = r.flat[:]

datapivoted = data.pivot(index=['bBand','gBand','rBand'], columns=pixel, values=[data.loc[pixel,'bBand'],data.loc[pixel,'bBand'],data.loc[pixel,'bBand']])

print(data.head())
print(data.shape)

Обновить

Воссоздайте фрейм данных, используя следующий код, который я считаю правильным и более эффективным, но все еще не могу повернуть

img = cv2.imread('/Volumes/EXTERNAL/Stitched-Photos-for-Chris/p7_0015_20161005-949am-75m-pass-1.jpg.png',1)
row,col = img.shape[:2]
#print(row , col)
b,g,r = cv2.split(img)

data = pd.DataFrame({'bBnad':b.flat[:],'gBnad':g.flat[:],'rBnad':r.flat[:]})
1 2

1 ответ:

Серьезно переосмыслил проблему. Поскольку мне нужно было полностью поменять ось, это было просто, как транспонирование с использованием .T

data = pd.DataFrame({'bBnad':b.flat[:],'gBnad':g.flat[:],'rBnad':r.flat[:]})
datapivoted = data.T
print(datapivoted.head())
print(datapivoted.shape)