python - Python Pandas Pivot 图像数据表
问题描述
我有一个使用 Pandas 的数据框,我创建了一个 3000000x3(像素 x rob 带)的表,现在正试图旋转它,所以我有一个 3x3000000 的表,然后针对新数据运行 PCA。
我正在使用 pandas pivot 功能,但无法弄清楚我做错了什么。
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[:]})
解决方案
严重地过度思考了这个问题。由于我需要完全交换轴,因此使用转置很简单.T
data = pd.DataFrame({'bBnad':b.flat[:],'gBnad':g.flat[:],'rBnad':r.flat[:]})
datapivoted = data.T
print(datapivoted.head())
print(datapivoted.shape)
推荐阅读
- r - R tryCatch 但在出现警告的情况下保留表达式结果
- android - 如何加密滑翔缓存数据?
- javascript - 导入 Bootstrap 模式后下拉菜单不起作用
- node.js - AWS S3 预签名 POST 访问被拒绝
- excel - 向 EWS 电子邮件添加附件(使用 VBA)
- html - 隐藏在移动设备上的导航栏
- angular - ng-bootstrap Datepicker 默认导航年份为当前日期前 10 年
- c++ - 正在调用 x = std::array
() 与声明 std::array 相同 X? - angular - 在 jhipster 中如何集成角度管理主题模板而不是默认模板
- c# - 使用另一个数据表值更新数据表值