我们沿着哪个轴取最小值和最大值?
为了回答这个问题,我们可能需要更多关于您的数据的信息,但是一般来说,当讨论3通道图像时,例如,我们将使用每通道最小值和最大值进行规格化。这意味着我们将执行规格化3次-每通道一次。
下面是一个例子:img = numpy.random.randint(0, 100, size=(10, 10, 3)) # Generating some random numbers
img = img.astype(numpy.float32) # converting array of ints to floats
img_a = img[:, :, 0]
img_b = img[:, :, 1]
img_c = img[:, :, 2] # Extracting single channels from 3 channel image
# The above code could also be replaced with cv2.split(img) << which will return 3 numpy arrays (using opencv)
# normalizing per channel data:
img_a = (img_a - numpy.min(img_a)) / (numpy.max(img_a) - numpy.min(img_a))
img_b = (img_b - numpy.min(img_b)) / (numpy.max(img_b) - numpy.min(img_b))
img_c = (img_c - numpy.min(img_c)) / (numpy.max(img_c) - numpy.min(img_c))
# putting the 3 channels back together:
img_norm = numpy.empty((10, 10, 3), dtype=numpy.float32)
img_norm[:, :, 0] = img_a
img_norm[:, :, 1] = img_b
img_norm[:, :, 2] = img_c
编辑:我刚刚想到,一旦你有了单通道数据(例如32x32图像),你就可以简单地使用:from sklearn.preprocessing import normalize
img_a_norm = normalize(img_a)如何使用3D阵列?
嗯,这是个大问题。如果您需要像array wise min和max这样的函数,我将使用Numpy版本。例如,索引是通过轴宽分隔符来实现的—正如您在上面的示例中所看到的。
另外,请参考Numpy关于ndarray@https://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.html的文档
去了解更多。他们真的有一套很好的n维数组工具。