numpy reshape中的-1表示什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (29)

通过参数-1的整形函数,可以将一个Numpy矩阵重新组合成一个向量。但我不知道-1是什么意思。

例如:

a = numpy.matrix([[1, 2, 3, 4], [5, 6, 7, 8]])
b = numpy.reshape(a, -1)

结果b是:matrix([[1, 2, 3, 4, 5, 6, 7, 8]])

有人知道-1是什么意思吗?而且,python似乎指定了几个含义,例如:array[-1]代表最后一个元素。你能解释一下吗?

提问于
用户回答回答于
用户回答回答于

现在看看这个例子。

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

现在试图用(-1)重塑。结果新形状为(12,),与原形状(3,4)兼容。

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

现在试图用(-1,1)重塑。我们提供列为1,行作为未知。因此,我们得到了新的形状为(12,1),并与原始形状(3,4)兼容。

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

新形状为(-1,2)。行未知,列2。我们得到了结果新的形状为(6,2)

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

现在试着让列不为人所知。新形状为(1,-1),即行为1,列未知数。我们得到了新的形状为(1,12)

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

新形状(2,-1)。第2行,列未知数。我们得到了结果新的形状为(2,6)

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

新形状为(3,-1)。第3行,列未知数。我们得到结果的新形状为(3,4)

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

最后,如果我们试图提供两个未知的维数,即新的形状(-1,-1)。它会抛出一个错误

z.reshape(-1, -1)
ValueError: can only specify one unknown dimension

扫码关注云+社区