首页 >后端开发 >Python教程 >Numpy 的 Reshape() 中的 -1 参数是通配符还是固定值?

Numpy 的 Reshape() 中的 -1 参数是通配符还是固定值?

Barbara Streisand
Barbara Streisand原创
2024-10-20 22:15:021078浏览

Is the -1 Parameter in Numpy's Reshape() a Wildcard or a Fixed Value?

理解 -1 在 Numpy Reshape 中的作用

在 Numpy 中, reshape() 方法允许转换数组形状。使用 2D 数组时,可以使用 reshape(-1) 将它们重塑为 1D 数组。例如:

import numpy as np

a = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
a.reshape(-1)
# Output: array([[1, 2, 3, 4, 5, 6, 7, 8]])

通常,array[-1] 表示数组中的最后一个元素。然而,在 reshape(-1) 的上下文中,这具有不同的含义。

Reshape 中的 -1 参数

reshape(- 1) 用作通配符维度。这表明新形状的相应尺寸应自动确定。这是通过满足新形状必须与原始数组形状对齐并保留其线性维度的标准来完成的。

Numpy 允许在形状参数之一中使用 -1,从而能够指定未知维度。例如,(-1, 3) 或 (2, -1) 是有效形状,而 (-1, -1) 则不是。

重塑 (-1) 的示例

考虑以下数组:

z = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
z.shape  # (3, 4)

使用 (-1) 重塑:

z.reshape(-1)
# Output: array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12])
# New shape: (12,)

使用 (-1, 1) 重塑(单一特征):

z.reshape(-1, 1)
# Output: array([[ 1], [ 2], [ 3], [ 4], [ 5], [ 6], [ 7], [ 8], [ 9], [10],
#                [11], [12]])
# New shape: (12, 1)

使用 (-1, 2) 重塑(单行):

z.reshape(1, -1)
# Output: array([[ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12]])
# New shape: (1, 12)

使用 (2, -1) 重塑:

z.reshape(2, -1)
# Output: array([[ 1,  2,  3,  4,  5,  6], [ 7,  8,  9, 10, 11, 12]])
# New shape: (2, 6)

使用重塑(3, -1)(原始形状):

z.reshape(3, -1)
# Output: array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
# New shape: (3, 4)

请注意,将两个尺寸指定为 -1,即 (-1, -1),将导致错误。

通过理解 reshape() 中 -1 的意义,开发人员可以有效地转换数组形状,以满足他们在 Numpy 中的特定数据处理需求。

以上是Numpy 的 Reshape() 中的 -1 参数是通配符还是固定值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn