numpy 学习:数组的拼接、堆叠和拆分

numpy 数组操作:拼接、堆叠与拆分详解
本文介绍了numpy中数组的拼接、堆叠和拆分操作。拼接不改变维度,堆叠会增加新轴。详细讲解了axis参数的用法,包括沿行、列和深度的堆叠,并通过实例展示了如何进行数组的拆分。内容涵盖一维和二维数组的处理,有助于理解numpy中的数组操作。

拼接不会改变数组的维度,而堆叠会增加新的轴。

一,拼接

如果要把两份数据组合到一起,需要拼接操作。

numpy.concatenate((a1, a2, ...), axis=0, out=None)

参数axis默认值是0,标识按照行来拼接,如果设置为None,那么所有的数组将展开为一维,并拼接在一起。

对二维数组进行拼接

x = np.array([[1, 2, 3], [4, 5, 6]])
y = np.array([[7, 8, 9], [10, 11, 12]])
z = np.concatenate([x, y], axis=0)
print(z)
# [[ 1  2  3]
#  [ 4  5  6]
#  [ 7  8  9]
#  [10 11 12]]
z = np.concatenate([x, y], axis=1)
print(z)
# [[ 1  2  3  7  8  9]
#  [ 4  5  6 10 11 12]]

二,堆叠,沿着新加入数组

np.stack的作用是沿着新的轴堆叠一个数组:

  • 沿新轴:默认是axis=0
  • 加入数组是指:新生成的数组会比用来进行拼接的原数组多一个维度.

一维数组相当于是1行N列的数组,当使用column_stack()时,该一维数组作为一个新列;当使用hstack()函数时,为原始数组新增N列;当使用vstack()函数时,为原始数组新增1行。

1,把一维数组作为列添

<think>嗯,用户想详细了解NumPy库中用于数组操作的函数及其参数。首先,我得回想一下NumPy有哪些常用的数组操作函数。比如reshape、resize、concatenate、stack、split、transpose这些应该都是比较核心的。 接下来,每个函数的参数需要详细说明。比如reshape函数,参数有array, newshape, order。其中newshape可以是整数或者元组,需要注意元素总数要一致。order参数有'C''F'的区别,可能用户会关心内存布局的问题。 然后,concatenate函数,axis参数是关键,用户可能不太理解不同维度的拼接方式,需要举例说明。比如沿着轴0或轴1拼接数组时的不同结果。 还有stack函数,concatenate的区别在于会新增维度,这点需要强调。比如两个一维数组合成二维数组时,stack会在新维度上堆叠,而concatenate则是直接连接。 split函数的参数indices_or_sections可能有些复杂,用户可能不知道传入整数数组的区别。需要分情况说明,比如平均分割自定义分割点的情况。 transpose函数的axes参数如果是多维数组的话,可能需要详细解释轴顺序的变化,以及默认情况下的转置行为。 另外,用户可能不仅需要函数说明,还需要具体的例子来辅助理解。比如每个函数都给出一个简单的代码示例,这样更直观。 还需要注意用户的使用场景,可能是数据处理或者科学计算,所以强调这些函数在调整数组形状、合并拆分、转置等方面的实用性。同时,提醒常见的错误,比如reshape时元素数量不匹配,或者拼接时维度不对齐,帮助用户避免问题。 最后,总结一下NumPy的高效性这些操作的重要性,让用户明白掌握这些函数能提升数据处理能力。可能还要提到参考官方文档,但用户可能更希望有一个简明的中文指南,所以尽量用清晰易懂的语言解释。</think>好的,我将详细介绍 NumPy 库中常用的数组操作函数及其参数用法,采用结构化说明并附带示例: --- ### 一、数组形状操作 #### 1. `reshape(array, newshape, order='C')` - **功能**:改变数组维度而不改变数据 - **参数**: - `newshape`:整数或元组(如`(2,3)`),`-1`表示自动推导维度 - `order`:`'C'`按行填充(默认),`'F'`按列填充 - **示例**: ```python import numpy as np arr = np.arange(6) print(arr.reshape(2, 3)) # 输出:[[0 1 2], [3 4 5]] ``` #### 2. `resize(a, new_shape)` - **功能**:直接修改原数组形状(不同于`reshape`会创建新数组) - **注意**:新形状元素数不同时会填充0或截断数据 - **示例**: ```python arr = np.array([1,2,3]) arr.resize(5) # 结果:[1 2 3 0 0] ``` --- ### 二、数组合并操作 #### 1. `concatenate((a1, a2, ...), axis=0)` - **功能**:沿指定轴连接相同维度的数组 - **参数**: - `axis`:0-按行合并,1-按列合并 - **示例**: ```python a = np.array([[1,2], [3,4]]) b = np.array([[5,6]]) print(np.concatenate((a, b), axis=0)) # 结果:[[1 2], [3 4], [5 6]] ``` #### 2. `stack(arrays, axis=0)` - **功能**:沿新维度堆叠数组(增加维度) - **示例**: ```python a = np.array([1,2]) b = np.array([3,4]) print(np.stack((a, b), axis=0)) # 结果:[[1 2], [3 4]] ``` --- ### 三、数组分割操作 #### `split(ary, indices_or_sections, axis=0)` - **功能**:将数组分割为多个子数组 - **参数**: - `indices_or_sections`:整数(均分份数)或分割点位置列表 - **示例**: ```python arr = np.arange(9) print(np.split(arr, 3)) # 分成3个均等数组 print(np.split(arr, [2,5])) # 在索引25处分割 ``` --- ### 四、数组转置操作 #### `transpose(a, axes=None)` - **功能**:调整数组维度顺序 - **参数**: - `axes`:指定新维度顺序的元组(默认反转维度) - **示例**: ```python arr = np.arange(6).reshape(2,3) print(arr.T) # 等价于transpose() # 原形状(2,3),转置后(3,2) ``` --- ### 五、参数使用要点总结 | 参数名 | 常见取值 | 典型应用场景 | |---------------------|------------------------|-----------------------------| | `axis` | 0(行)、1(列) | 控制合并/分割方向 | | `order` | 'C'、'F' | 处理内存存储顺序问题 | | `indices_or_sections` | 整数、数组 | 均分分割与自定义分割 | --- ### 六、常见错误规避 1. **维度不匹配**:`concatenate`操作前需确保除指定轴外其他维度相同 2. **元素数不一致**:`reshape`时新旧形状元素总数必须相等 3. **轴超限错误**:操作时注意数组的实际维度数 建议配合使用`.shape`属性检查维度变化,可通过`np.newaxis`增加维度(如`arr[:, np.newaxis]`)辅助操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

悦光阴

你的鼓励是我创作的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值