Python的reshape(-1,3)的用法及引申

最近进行机器学习实战过程中,遇到了reshape函数的新用法,简单总结一下:

Numpy中reshape函数的三种常见相关用法

reshape(1,-1)转化成1行,列需要计算:

reshape(2,-1)转换成两行,列需要计算:

reshape(-1,1)转换成1列,行需要计算:

reshape(-1,2)转化成两列,行需要计算。

我们接下来通过例子来说明一下:

In [2]: import numpy as np
In [3]: x=np.array([[[1,2,3],[4,5,6],[7,8,9]]])
In [4]: x
Out[4]: 
array([[[1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]]])
In [5]: x.shape
Out[5]: (1, 3, 3)

我们定义一个三维数组,共计九个元素:
首先第一个reshape(1,-1)

In [6]: x.reshape((1,-1))
Out[6]: array([[1, 2, 3, 4, 5, 6, 7, 8, 9]])

我们不难理解,我们目的是把三维数组转换成二维数组,且行数为1,那么列数为:9/1=9

所以是一个1*9的数组。

同样的道理,我们看一下另外三个:

In [7]: x.reshape((3,-1))
Out[7]: 
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
In [8]: x.reshape((-1,1))
Out[8]: 
array([[1],
       [2],
       [3],
       [4],
       [5],
       [6],
       [7],
       [8],
       [9]])
In [9]: x.reshape((-1,3))
Out[9]: 
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

我们用(3,-1)和(-1,3)的原因很简单,因为2不能整除9.

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 在Python中,`reshape(-1, 1)`是NumPy数组的一个方法,它可以将数组的形状更改为列数为1,行数自动计算的形状。 其中,`-1`表示自动计算行数,而`1`表示列数为1。这个方法通常用于将一维数组转换为二维数组,或者将多维数组展平为一维数组后再转换为二维数组。 例如,对于一个形状为(4, 2)的二维数组,执行`reshape(-1, 1)`操作后,得到的数组形状将变为(8, 1)。 ### 回答2: Python中的reshape(-1,1)函数numpy中的一个重构函数,它用于重构一个数组的形状。其中,参数-1表示可以自动计算行数或列数,而1表示该数组只有一列。也就是说,reshape(-1,1)函数可以将一个一维的数组变为二维的数组,其中只有一列。 下面通过一个示例来进一步解释reshape函数的具体操作。假设有一个包含10个整数的一维数组arr,如下所示: arr= [1,2,3,4,5,6,7,8,9,10] 若要将该数组重构为一个二维数组,使之每行只有一个元素,可以使用以下代码: arr = np.array(arr).reshape(-1,1) 其中,np.array(arr)将一维数组转化为numpy数组,reshape(-1,1)将其重构为二维数组。 此时arr的形状变为: [[ 1] [ 2] [ 3] [ 4] [ 5] [ 6] [ 7] [ 8] [ 9] [10]] 可以看到,该数组的形状变为了10行1列的二维数组。这种变换可以在一些数据分析和机器学习中使用。具体来说,可以将一维数组中的每个元素作为一个样本的特征值,然后将这些特征值存储在一个二维数组中,在之后的工作中使用该数组进行数据处理和分析。 总之,Python中的reshape(-1,1)函数可以将一个一维数组重构为一个二维数组,其中只有一列的数据。该函数的使用具有很大的灵活性,并可以根据具体的数据需求进行调整。 ### 回答3: 在Pythonnumpy库中,reshape函数是一种用于重塑数组结构的函数。其中参数“-1”常用于表示未知的维度大小。当将参数传递给reshape函数时,可以使用“-1”来代替任何未知的维度大小,使数组在不改变总大小的情况下重塑为相同的形状。 在reshape函数中,-1通常与1一起使用,以表示新数组的第二维度大小为1。使用reshape(-1,1)可以将原数组重新塑造为一个新的二维数组,其中第一维的大小可以由函数自动计算,而第二维的大小为1。 例如,如果有一个原始数组a=[1,2,3,4,5],并且我们想将它重新塑造为一个二维数组,其中一列是原始数据,另一列是0,则可以使用以下代码: a = np.array([1,2,3,4,5]) b = np.zeros((a.shape[0], 1)) c = np.concatenate((a.reshape(-1,1), b), axis=1) 在这个代码中,使用a.reshape(-1,1)将一维的a数组转换为了一个新的二维数组,该数组有自动计算的行数和一列。然后,我们使用np.zeros函数创建了一个形状为(a.shape[0],1)的新数组b,它也有自动计算的行数和一列。最后,我们使用np.concatenate函数将a和b连接在一起,形成新的数组c,它有两列,其中第一列是我们原始的a数组,而第二列是全部由0组成的一列。 总而言之,numpyreshape(-1,1)函数可以将一维数组转换为新的二维数组,其中第一维的大小有函数自动计算,而第二维的大小为1。这个函数非常有用,在处理机器学习问题时可以帮助我们将标签数据转换为适合训练模型的格式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旅途中的宽~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值