app*_*ges 16 python arrays numpy image-processing
我有1000个RGB图像(64X64),我想将其转换为(m,n)数组.
我用这个:
import numpy as np
from skdata.mnist.views import OfficialImageClassification
from matplotlib import pyplot as plt
from PIL import Image
import glob
import cv2
x_data = np.array( [np.array(cv2.imread(imagePath[i])) for i in range(len(imagePath))] )
print x_data.shape
Run Code Online (Sandbox Code Playgroud)
这给了我: (1000, 64, 64, 3)
如果我这样做:
pixels = x_data.flatten()
print pixels.shape
Run Code Online (Sandbox Code Playgroud)
我明白了: (12288000,)
但是,我需要一个具有以下尺寸的数组: (1000, 12288)
我怎样才能做到这一点?
reshape()在应用于展flatten()平数组后应用numpy方法:
x_data = np.array( [np.array(cv2.imread(imagePath[i])) for i in range(len(imagePath))] )
pixels = x_data.flatten().reshape(1000, 12288)
print pixels.shape
Run Code Online (Sandbox Code Playgroud)
试试这个:
d1, d2, d3, d4 = x_data.shape
Run Code Online (Sandbox Code Playgroud)
然后使用 numpy.reshape()
x_data_reshaped = x_data.reshape((d1, d2*d3*d4))
Run Code Online (Sandbox Code Playgroud)
要么
x_data_reshaped = x_data.reshape((d1, -1))
Run Code Online (Sandbox Code Playgroud)
(Numpy推断出值而不是-1原始长度和定义的维度d1)