【问题标题】:Python convert image array(20,20) to array(400)Python将图像数组(20,20)转换为数组(400)
【发布时间】:2024-05-17 18:40:02
【问题描述】:

使用 Python 2.7 和 Numpy。

我有一个黑白图像存储在数组 (20,20) 中,我想将其转换为数组 (400)。如果我有很多图像,即 array(x,20,20),如何在 Python 中完成?

非常感谢!

编辑:非常感谢。我一开始就弄错了问题,因此我无法弄清楚这段简单的代码。

【问题讨论】:

  • 重塑为arr.reshape(-1,400)?
  • @Leta 一个 20x20 数组折叠成一维数组将为您提供 400 个结果。将这些值相乘只会改变每个像素的颜色。
  • 对不起,我真笨。我不知道我是怎么弄错的。

标签: python python-2.7 numpy


【解决方案1】:

如果可能,您可以使用np.ravel 获取阵列的一维视图;否则返回副本。有关“如果可能”的定义,请参阅链接文档。

a = np.array([[1, 2, 3], [4, 5, 6]])
print(a.ravel())
# [1 2 3 4 5 6]

【讨论】:

    【解决方案2】:

    我认为numpy.flatten() 是你要找的东西

    >>> a = np.array([[1,2], [3,4]])
    >>> a.flatten()
    array([1, 2, 3, 4])
    >>> a.flatten('F')
    array([1, 3, 2, 4])
    

    https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.ndarray.flatten.html

    【讨论】:

    • 没有。如果我有一个数组(A,B),我需要一个数组(A*B)。你写的是一个数组(A+B)。您示例的数组应为 array([3, 4, 6, 8])。
    • @Leta 考虑到您的问题或我在这里假设的基本 ML 应用程序,这没有多大意义。在后一种情况下,您肯定不想更改像素值,只更改外部尺寸。 这个答案没问题。但应该明白,它始终是一份副本(可能与另一个答案中显示的 ravel 不同)。
    • @Leta:这没有意义。
    • 现在我知道我是多么愚蠢。对不起!
    • @Leta 如上所述(由 Divakar 提供)如果您需要更多地控制形状,numpy 的 reshape 功能是另一种选择。