[英]Numpy flatten RGB image array
我有 1,000 张 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
这给了我: (1000, 64, 64, 3)
现在,如果我这样做:
pixels = x_data.flatten()
print pixels.shape
我得到: (12288000,)
但是,我需要一个具有以下维度的数组: (1000, 12288)
我怎样才能做到这一点?
在将flatten()
应用于扁平化数组后应用 numpy 方法reshape()
:
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
试试这个:
d1, d2, d3, d4 = x_data.shape
然后使用numpy.reshape()
x_data_reshaped = x_data.reshape((d1, d2*d3*d4))
或
x_data_reshaped = x_data.reshape((d1, -1))
(Numpy 从原始长度和定义的维度d1
推断值而不是-1
)
您可以遍历图像数组并独立展平每一行。
numImages = x_data.shape[0]
flattened = np.array([x_data[i].flatten() for i in range(0,numImages)])
你也可以使用这个:X 是你的 2D 图片,例如大小为 32x32 和 -1 它只是意味着它是一个未知的维度,我们希望 numpy 找出它。 numpy 将通过查看“数组的长度和剩余维度”并确保它满足上述标准( numpy reshape 中 -1 是什么意思? )来计算这一点。 T 表示在使用轴关键字参数 ( https://docs.scipy.org/doc/numpy/reference/generated/numpy.transpose.html ) 时反转张量的转置。
X_flatten = X.reshape(X.shape[0], -1).T
假设你有一个数组image_array
你可以使用reshape()
方法。
image_array = image_array.reshape(1000, 12288)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.