首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >-1在numpy重塑中是什么意思?

-1在numpy重塑中是什么意思?
EN

Stack Overflow用户
提问于 2013-09-09 11:25:03
回答 9查看 457.1K关注 0票数 564

可以使用参数为-1的重塑函数将数值矩阵重塑为向量。但我不知道-1在这里是什么意思。

例如:

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

的结果

是:

有人知道-1在这里是什么意思吗?python assign -1似乎有几种含义,例如:

表示最后一个元素。你能解释一下吗?

EN

回答 9

Stack Overflow用户

发布于 2017-02-28 21:48:52

提供新形状要满足的标准是

‘新形状应与原始形状兼容’

numpy允许我们给出一个新的形状参数为-1 (例如:(2,-1)或(-1,3),而不是(-1,-1))。这仅仅意味着它是一个未知的维度,我们想让numpy来解决它。numpy将通过查看

‘数组的长度和剩余维度’

并确保它满足上述标准

现在请看示例。

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).again与原始形状(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列未知。我们得到的结果是新的形状为(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
票数 745
EN

Stack Overflow用户

发布于 2013-09-09 11:27:07

根据

newshape : int或int的元组

新形状应与原始形状兼容。如果是整数,则结果将是该长度的一维数组。一个形状维度可以是

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

票数 66
EN

Stack Overflow用户

发布于 2017-01-03 00:41:36

numpy.reshape(a,newshape,order{})

查看下面的链接了解更多信息。

https://docs.scipy.org/doc/numpy/reference/generated/numpy.reshape.html

对于您提到的下面的示例,输出将结果向量解释为单行。(- 1 )表示行数为1。

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

输出:

matrix([[1, 2, 3, 4, 5, 6, 7, 8]])

可以用另一个例子更准确地解释这一点:

b = np.arange(10).reshape((-1,1))

输出:(一维数组)

array([[0],
       [1],
       [2],
       [3],
       [4],
       [5],
       [6],
       [7],
       [8],
       [9]])

或者

b = np.arange(10).reshape((1,-1))

输出:(是一个一维的行数组)

array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])
票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18691084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档