关于Numpy中的shape()以及reshape()

shape 属性

对于shape函数,官方文档是这么说明:
the dimensions of the array. This is a tuple of integers indicating the size of the array in each dimension.

直译:数组的维度。这是一个整数的元组,元组中的每一个元素对应着每一维度的大小(size)。

举例说明

一维数组

// An highlighted block
import numpy as np
a = np.array([1,2,3])
print(a.shape) # 输出 (3,)

说明:这里输出的元组(3,)按官方的文档理解,这里的3表示的是第一个维度中元素的大小(size);

同理,对于二维数组myarray,可推测出myarray.shape输出的应该类似(n,m)只含有两个元素的元组。

其中,第一个元素n代表中一维数组中元素的个数;m代表第二维度中元素的个数。

// An highlighted block
b = np.array([[1,2,3],[3,4,5]])
print(b.shape) # 输出(2,3)

元组(2,3) 说明这是一个二维数组,其中第一个维度含有2个元素,第二个维度中每一个元素都含有3个元素(1,2,3).
*第一维度可以理解为行数,第二维度可以理解为列数,第三维度可以理解为深度 *
总结
通过以上的例子,我们可以知道对于numpy中数组的shape属性输出的元组,有以下两个结论:

  1. 元组的元素的个数等于维度数
  2. 元组中每一个元素又代表中每一维度元素的个数(从左到右,依次为第一维度中元素的个数,第二维度中元素的个数…第n维度元素的个数)
    如,若某一个numpy数组test_array 调用shape输出为(2,3,3,4) 我们根据上面的结论,就可以很快的知道这是一个4维的数组。

其中,第一个维度只有2个元素。第二个维度有3个元素,第三个维度也有3个元素,最后的第四个维度有4个元素。

### NumPy `reshape` 方法详解 #### 基本概念 NumPy 提供了一个强大的工具来改变数组的形状而不改变其数据,这就是 `reshape()` 函数。此功能允许用户指定新尺寸的同时保持原有元素不变[^1]。 #### 函数签名与参数说明 该函数定义如下: ```python numpy.reshape(a, newshape, order='C') ``` - **a**: 要被重新塑形的输入数组。 - **newshape**: 新的形状应当是整数或由多个整数组成的元组;如果提供的是单个整数,则返回一维数组。其中可包含一个 `-1` 来让 NumPy 自动计算相应维度大小。 - **order**: 控制多维数组中元素排列方式,默认为 `'C'` 表示 C 语言风格(按行优先),也可以选择 `'F'` 或者 `'A'`[^4]。 #### 实际应用案例展示 ##### 示例 1:简单转换 创建并打印初始的一维数组及其通过 `reshape()` 改变后的形式。 ```python import numpy as np arr = np.arange(6) print("原始数组:", arr) reshaped_arr = arr.reshape((2, 3)) print("\n重塑后的二维数组:\n", reshaped_arr) ``` 上述代码片段展示了如何把含有六个连续数字的一维向量变成两行三列的形式[^2]。 ##### 示例 2:灵活调整维度 当不确定某特定轴的具体长度时,可以通过传递 `-1` 让系统自行决定合适值。 ```python matrix = np.array([[1, 2, 3], [4, 5, 6]]) flattened_matrix = matrix.reshape(-1) print(flattened_matrix) # 输出: [1 2 3 4 5 6] restructured_matrix = flattened_matrix.reshape((-1, 2)) print(restructured_matrix) # 输出: # [[1 2] # [3 4] # [5 6]] ``` 这段例子先展平矩阵再恢复到不同结构,体现了 `reshape()` 的灵活性[^3].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值