Nmpuy_Reshape的-1参数

Numpy的reshape属性应该能保证新数组的元素数量与原数组元素数量相等。

一个参数为-1时,那么reshape会根据另一个参数的值计算出新数组的行与列。

如原数组是3*4的,则如果reshape(-1,1),则新数组变成12*1的。如果reshape(2,-1),则新数组变成2*6的。

下面来举几个例子来理解一下:

>>> z = np.array([[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12],[13, 14, 15, 16]])

>>> print(z)
[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]
 [13 14 15 16]]
>>> print(z.shape)
(4, 4)
>>> print(z.reshape(-1)) #默认变成1行
[ 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16]
>>> print(z.reshape(-1,1))  #只知道要变成一列,不知道行数是多少
                            #则新的数组的shape为(16, 1),与原来的(4, 4)配套。
[[ 1]
 [ 2]
 [ 3]
 [ 4]
 [ 5]
 [ 6]
 [ 7]
 [ 8]
 [ 9]
 [10]
 [11]
 [12]
 [13]
 [14]
 [15]
 [16]]
>>> print(z.reshape(2,-1))  
[[ 1  2  3  4  5  6  7  8]
 [ 9 10 11 12 13 14 15 16]]
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

关于reshape函数的具体介绍请看numpy.reshape

### numpy reshape参数 -1 的意义及作用 `numpy.reshape()` 是用于重塑数组形状的一个重要方法。当 `reshape` 方法中的某个维度被设置为 `-1` 时,表示该维度的大小由其他维度自动推导得出[^1]。 #### 参数 -1 的具体行为 在 NumPy 中,`-1` 被视为一种占位符,允许用户省去手动计算某些维度的具体数值。NumPy 会根据原始数组的总元素数量以及指定的其他维度来动态调整这个位置上的值。例如: ```python import numpy as np z = np.array([[1, 2, 3], [4, 5, 6]]) reshaped_z = z.reshape(-1) print(reshaped_z) # 输出: array([1, 2, 3, 4, 5, 6]) ``` 上述代码中,`z.reshape(-1)` 将二维数组展平成一维数组,其中 `-1` 表示让 NumPy 自动计算所需的长度。 #### 多维情况下的应用 对于多维数组而言,`-1` 可以与其他正整数一起使用,以便灵活定义目标形状的一部分尺寸。例如,在深度学习场景下,如果需要将数据转换为特定输入格式,则可以通过如下方式实现: ```python data = np.random.rand(9, 4) # 假设我们需要将最后一列单独提取并转置为 (9, 1) 形状 last_column_reshaped = data[:, -1].reshape(-1, 1) print(last_column_reshaped.shape) # 输出: (9, 1) ``` 这里通过设定最后一个轴为 `(1,)` 并利用 `-1` 来保持其余部分不变从而完成操作[^2]。 #### 实际应用场景举例 考虑一个实际例子:假设拥有一系列图像像素点组成的向量形式的数据集,每张图片有固定宽度高度比如 w × h ,那么可以很方便地重构这些平坦化后的矢量回原来的矩阵布局: ```python pixels_per_image = w * h images_flat = ... # shape (n_images, pixels_per_image) images_reconstructed = images_flat.reshape(n_images, h, w, channels=-1) ``` 在这个案例里,“channels”可能代表颜色通道数目RGB等信息;而由于已知前面三个维度乘积等于原数组大小,所以最后那个channel维度可以直接写做 '-1' 让系统自行决定其确切取值[^3]。 #### 总结 综上所述,`numpy.reshape` 函数里的 `-1` 提供了一个便捷途径简化复杂变换过程的同时还减少了人为错误几率。它主要适用于那些能够依据现有条件唯一确定某单一未知方向尺度的情形之下。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值