当前位置:  开发笔记 > 编程语言 > 正文

numpy reshape中的-1是什么意思?

如何解决《numpyreshape中的-1是什么意思?》经验,为你挑选了2个好方法。

在numpy中,创建一个100X100项目的矩阵是这样的:

import numpy as np
x = np.ndarray((100, 100))
x.shape  # outputs: (100, 100)

numpy内部将所有10000个项目存储在10000个项目的数组中,无论此对象的形状如何,这允许我们将此数组的形状更改为任何维度,只要阵列上的项目数不变

例如,将我们的对象重塑为10X1000是正常的,因为我们保留了10000个项目:

x = x.reshape((10, 1000))

重塑到10X2000不会工作,因为我们没有足够的项目列表

x.reshape((10, 2000))
ValueError: total size of new array must be unchanged

所以回到-1问题,它的作用是未知维度的表示法,意思是:让numpy用正确的值填充缺失的维度,这样我的数组就保持相同数量的项目.

所以这:

x = x.reshape((10, 1000))

相当于:

x = x.reshape((10, -1)) 

内部numpy所做的只是计算10000 / 10以获得缺失的维度.

-1 甚至可以在数组的开头或中间.

以上两个例子相当于:

x = x.reshape((-1, 1000)) 

如果我们将尝试将两个维度标记为未知,那么numpy将引发异常,因为它无法知道我们的含义,因为有多种方法可以重新整形数组.

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


MaxPowers.. 12

这意味着,-1正在推断您传递的维度的大小.从而,

A.reshape(-1, 28*28)

意味着,"重塑A以使其第二维尺寸为28*28并计算第一维的正确尺寸".

请参阅重塑文档.



1> ShmulikA..:

在numpy中,创建一个100X100项目的矩阵是这样的:

import numpy as np
x = np.ndarray((100, 100))
x.shape  # outputs: (100, 100)

numpy内部将所有10000个项目存储在10000个项目的数组中,无论此对象的形状如何,这允许我们将此数组的形状更改为任何维度,只要阵列上的项目数不变

例如,将我们的对象重塑为10X1000是正常的,因为我们保留了10000个项目:

x = x.reshape((10, 1000))

重塑到10X2000不会工作,因为我们没有足够的项目列表

x.reshape((10, 2000))
ValueError: total size of new array must be unchanged

所以回到-1问题,它的作用是未知维度的表示法,意思是:让numpy用正确的值填充缺失的维度,这样我的数组就保持相同数量的项目.

所以这:

x = x.reshape((10, 1000))

相当于:

x = x.reshape((10, -1)) 

内部numpy所做的只是计算10000 / 10以获得缺失的维度.

-1 甚至可以在数组的开头或中间.

以上两个例子相当于:

x = x.reshape((-1, 1000)) 

如果我们将尝试将两个维度标记为未知,那么numpy将引发异常,因为它无法知道我们的含义,因为有多种方法可以重新整形数组.

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



2> MaxPowers..:

这意味着,-1正在推断您传递的维度的大小.从而,

A.reshape(-1, 28*28)

意味着,"重塑A以使其第二维尺寸为28*28并计算第一维的正确尺寸".

请参阅重塑文档.


我爱你!非常感谢
推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有