Python Numpy中reshape函数参数-1的含义

本文详细介绍了NumPy中reshape函数的应用,特别是如何使用-1作为参数让NumPy自动计算未知维度。通过实例展示了如何改变数组形状,同时保持元素数量不变。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

新数组的shape属性应该要与原来数组的一致,即新数组元素数量与原数组元素数量要相等。一个参数为-1时,那么reshape函数会根据另一个参数的维度计算出数组的另外一个shape属性值。

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

>>> 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  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16]
>>> print(z.reshape(-1,1))  #我们不知道z的shape属性是多少,
                            #但是想让z变成只有一列,行数不知道多少,
                            #通过`z.reshape(-1,1)`,Numpy自动计算出有16行,
                            #新的数组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]]

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

### Python NumPy 库中的 `reshape` 函数 #### 语法 `numpy.reshape(a, newshape, order='C')` - **a**: 要被重塑的数组。 - **newshape**: 整数或整数元组,表示新形状。如果提供了一个整数值,则返回一维数组;可以使用 `-1` 来自动推断维度大小。 - **order**: {'C', 'F', 'A'},可选,默认为 `'C'`。指定读取/写入元素的方式。 #### 使用示例 创建一个简单的二维数组并展示其原始形态: ```python import numpy as np # 创建初始矩阵 matrix = np.array([[1, 2, 3], [4, 5, 6]]) print(f"Original matrix:\n{matrix}") ``` 将上述二维数组转换成不同的一维或多维形式: ```python # 将二维数组展平为一维数组 flattened_array = np.reshape(matrix, -1) print(f"\nFlattened array using (-1):\n{flattened_array}") # 改变形状至特定尺寸(例如:3x2) reshaped_3_by_2 = np.reshape(matrix, (3, 2)) print(f"\nReshaped to shape (3, 2):\n{reshaped_3_by_2}") # 自动推算其中一个维度大小 auto_inferred_shape = np.reshape(matrix, (2, -1)) print(f"\nAuto inferred one dimension size with (2, -1):\n{auto_inferred_shape}") ``` 以上代码片段展示了如何利用 `np.reshape()` 方法来改变给定数组的形式而不影响原数据的内容[^1]。 当设置参数 `order` 不同时,会影响元素排列顺序。对于大多数情况,默认值 `"C"` 已经足够满足需求,它按照 C 风格连续存储模式操作数据。而选择 `"F"` 则遵循 Fortran 方式的列优先级访问模式[^3]。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值