python整形是什么_关于python:numpy整形中的-1是什么意思?

本问题已经有最佳答案,请猛点这里访问。

I have a numpy array (A) of shape = (100000, 28, 28)

I reshape it using A.reshape(-1, 28x28)

这在机器学习管道中非常普遍。

这是如何运作的 ? 我从不了解重塑中的" -1"的含义。

一个确切的问题是

但没有确切的解释。 有什么答案吗?

请参阅该文档:docs.scipy.org/doc/numpy/reference/generated/-The new shape should be compatible with the original shape. If an integer, then the result will be a 1-D array of that length. One shape dimension can be -1. In this case, the value is inferred from the length of the array and remaining dimensions.

在您的示例中,结果数组将具有形状(100000,784)。 它是第一个维度的简写,因为只有一个值是正确的。

在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:我可以说:您不允许指定重整数组的1维。 您为该"未指定"维度使用-1。 在运行时,这是从重构数组的旧大小和其他尺寸推断出来的?

numpy只是为您计算它,而是您明确地编写它。 不涉及运行时。 是的,您是对的,它是根据旧大小推断的-reshape()无法更改数组项的数量

这意味着,将推断您传递了-1的尺寸的大小。从而,

A.reshape(-1, 28*28)

意思是,"重塑A使其第二维的尺寸为28 * 28,并计算第一维的正确尺寸"。

请参阅重塑文档。

我爱你! 非常感谢

非常感谢! 很好的解释

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值