【问题标题】:In reshape function of Numpy, what is the significance of giving three parameters, where the first one is -1?在 Numpy 的 reshape 函数中,给出三个参数有什么意义,第一个是-1?
【发布时间】:2020-11-25 17:35:51
【问题描述】:
arr = np.array([[1, 2, 3, 4, 5, 6]])
newarr = arr.reshape(-1,3,2)
newarr

上面是我做的代码。这是输出:

array([[[1, 2],
        [3, 4],
        [5, 6]]])

但我无法理解 -1 做了什么。 -1 单独应该使数组变平,即将多维数组转换为一维数组。当 -1 与 2,3 一起使用时,输出发生了什么变化?

【问题讨论】:

  • shape 的结果是什么?尝试几个案例并自己推断?

标签: python arrays python-3.x numpy numpy-ndarray


【解决方案1】:

正如 numpy.reshape docs 所说:

一个形状维度可以是-1。在这种情况下,该值是从数组的长度和剩余维度推断出来的。

也就是说,-1 表示“请计算出这个形状的尺寸”。它将被计算,以使元素的数量与原始数组中的相同。

在您的示例中,由于其余的形状尺寸为 2 和 3,因此已经涵盖了所有 6 个元素。因此,推断的(第一个)形状维度必须为 1,结果数组的形状为 (1, 2, 3)。

另一个例子:

arr = np.arange(27)  # 1-dim array of 27 elements
newarr = arr.reshape(-1,3,3)

在这种情况下,生成的 newarr.shape 将是 (3,3,3),因此您将获得 27 个元素。

【讨论】:

  • 生成的形状将是 1, 2, 3,而不是 0, 2, 3。
  • @user3483203 谢谢。太累了:)
猜你喜欢
  • 2020-04-29
  • 2013-09-12
  • 2017-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-08
  • 1970-01-01
相关资源
最近更新 更多