我用图像数据制作了一个 numpy 数组。我想将 numpy 数组转换为一维数组。
import numpy as np
import matplotlib.image as img
if __name__ == '__main__':
my_image = img.imread("zebra.jpg")[:,:,0]
width, height = my_image.shape
my_image = np.array(my_image)
img_buffer = my_image.copy()
img_buffer = img_buffer.reshape(width * height)
print str(img_buffer.shape)
Run Code Online (Sandbox Code Playgroud)
128x128 的图像在这里。

然而,该程序打印出 (128, 128)。我想img_buffer成为一个一维数组。我如何重塑这个数组?为什么 numpy 实际上不会将数组重塑为一维数组?
reshape工作不到位。您的代码不起作用,因为您没有将reshapeback返回的值分配给img_buffer。
如果您想将数组展平为一维,ravel或者flatten可能是更简单的选择。
>>> img_buffer = img_buffer.ravel()
>>> img_buffer.shape
(16384,)
Run Code Online (Sandbox Code Playgroud)
否则,你会想要这样做:
>>> img_buffer = img_buffer.reshape(np.product(img_buffer.shape))
>>> img_buffer.shape
(16384,)
Run Code Online (Sandbox Code Playgroud)
或者,更简洁地说:
>>> img_buffer = img_buffer.reshape(-1)
>>> img_buffer.shape
(16384,)
Run Code Online (Sandbox Code Playgroud)