在Numpy的整形函数中,给出三个参数的意义是什么,其中第一个参数是-1


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一起使用时,输出发生了什么变化?

正如numpy.reshape文档所说:

一个形状维度可以是-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个元素。

相关内容

最新更新